Excel сохранить в csv выделенный диапазон vba
Как сохранить данные рабочего листа в виде файла csv с двойными кавычками или без них?
Когда вы экспортируете или сохраняете диапазон данных из Excel в файл csv, обычно данные csv не заключены в двойные кавычки, но, если значения ваших ячеек разделены запятой или разрывом строки, экспортированные данные CSV будут с двойными кавычками. цитаты. В этой статье я расскажу о том, как сохранить данные рабочего листа в виде файла csv с двойными кавычками или без них, если вам нужно.
Сохраните данные рабочего листа как файл csv с двойными кавычками
Чтобы сохранить обычные данные в виде файла csv с двойными кавычками, вам может помочь следующий код VBA, пожалуйста, сделайте следующее:
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код VBA: сохранить данные рабочего листа как файл csv с двойными кавычками:
3, Затем нажмите F5 нажмите клавишу для запуска этого кода, и появится диалоговое окно, напоминающее вам о выборе диапазона данных, который вы хотите сохранить как файл csv с двойными кавычками, см. снимок экрана:
4. Затем нажмите OK и Сохранить как появится окно, укажите имя и расположение файла, а затем нажмите Сохраните кнопку, см. снимок экрана:
5, И Kutools for ExcelПоявится окно подсказки, чтобы напомнить вам, что новый файл CSV был сохранен в указанном месте, см. снимок экрана:
6. Нажмите OK чтобы закрыть диалоговое окно, и теперь, когда вы открываете новый файл csv, все данные заключаются в двойные кавычки, как показано на следующем снимке экрана:
Сохраняйте данные рабочего листа как файл csv без двойных кавычек
Если ваши данные разделены запятой, разрыв строки в ячейке, когда вы сохраняете данные как файл csv, данные будут заключены в двойные кавычки, как показано ниже:
Чтобы сохранить данные в виде CSV-файла без двойных кавычек, примените следующий код VBA.
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код VBA: сохранить данные рабочего листа как файл csv без двойных кавычек:
3, Затем нажмите F5 нажмите клавишу для запуска этого кода, и появится диалоговое окно, напоминающее вам о выборе диапазона данных, который вы хотите сохранить как CSV без двойных кавычек, см. снимок экрана:
4. Нажмите OK и Сохранить как отображается окно, укажите имя файла и расположение для нового файла CSV, см. снимок экрана:
5, Затем нажмите Сохраните кнопка, а Kutools for ExcelПоявится окно подсказки, чтобы сообщить вам, что новый файл CSV был сохранен в указанном месте, см. снимок экрана:
6. Нажмите OK чтобы закрыть диалоговое окно, и, когда вы откроете новый файл csv, двойные кавычки, окруженные данными, будут удалены, как показано на следующем снимке экрана:
Использовать функции файла (надстройки) совсем не сложно.
Вот несколько примеров:
Комментарии
Пётр, оформляйте заказ на сайте, прикрепляйте примеры файлов (исходный CSV и итоговый XLS), и подробно описывайте, что и как должно работать.
Здравствуйте, интересует платная доработка скрипта этого скрипта импорта.
Нужно для каждой строки основного листа из одной колонки распарсить содержимое (прописано через "|") на отдельный лист в несколько строк с ключем ID из первоначальной колонке (ну типа как связанные таблицы в БД).
Возьметесь? Предложение прошу в личку. С уважением Петр
Добрый день. Подскажите пожалуйста как ипортировать CSV (его размер около 1Гб) в Excel .
Надо код немного доработать
Если готовы оплатить - пишите на почту, сделаю
Добрый день! Подскажите, как сделать, чтобы при нажатии на кнопку "Загрузить файл CSV, начиная с первой пустой ячейки в первом столбце" данные разделись по запятой и при этом дробная часть заменялась с точки на запятую (т.е. 12,13,14.5 и т.д. на 12 13 14,5)
Добрый день!
Для решения моей задачи подходит 3-й код - Выгрузка в новую книгу. Но, когда я это делаю, то создается новая книга с вкладкой "данные" и все, вкладка пустая, ничего не выгружается. Сначала он предлагает выбрать файл .csv, я выбираю, затем книга с пустой вкладкой. Не подскажете почему так происходит?
Я столкнулся с проблемой, когда файл .csv в ручную открывается как надо, а вот через макрос все в строках. Нет ли какой-то простой возможности открыть через макрос в нормальном виде? Открываю командой Workbooks.Open Name.
Та же проблема, что и в посте 17 - Кавычки. Что дописать для удаления кавычек? Заранее спасибо.
Вообщем нужно быть внимательным к коду функции, где прописан разделитель, который стоит конкретно в вашем .csv файле. Если в качестве разделителя стоит запятая, то пишем : Optional ByVal ColumnsSeparator$ = "," . далее код. Если же точка с запятой ,то: Optional ByVal ColumnsSeparator$ = ";" . Только в этом случае будет корректное разбиение на столбцы.
Файлы *.csv в большинстве своём открываются "криво", в одном столбце через запятую, не разбиваясь по столбцам. Мне же нужно при открытии разнесение по столбцам. И такой макрос я нашёл, но он открывает новую книгу. Мне же нужно чтобы ФАЙЛ *.csv можно было залить на лист уже открытой книги. Вот и наткнулся на Ваш макрос, думал что нужное найти. Но Ваша функция и по столбцам не разбивает.
Тогда зачем вам разбираться в этом макросе, - файлы CSV, в большинстве своём, открываются как обычная книга Excel
Так что просто запишите свои действия встроенным в Excel макрорекордером, - получите макрос открытия CSV файла из одной строки.
Увы, пока я новичок в VBA, только начал изучать. Оттого сделать мне этого не под силу, как и многим другим несведущим наверное тоже.
Среди параметров вызова функции есть «Разделитель столбцов» - если вы его не задали, используется значение по-умолчанию (точка с запятой или запятая, не помню уже)
Пропишите нужный разделитель - и всё будет корректно открываться.
Файл .csv безусловно открывается, но вот только в том виде в каком он и существует. Разделение на столбцы не происходит.
Подсткажите плз, возможно ли с помощью этого макроса импортировать колонки в соответствующие колонки в excel. Например, в csv 2 колонки "Артикул" и "Цена", надо импортировать колонку с ценой, с привязкой по артикулу, т.е. что бы цена артикула в csv соответствовала цене артикула в excel.
Сделайте цикл по файлам, - каждый файл по-отдельности обрабатывая этим кодом
Вам осталось только совместить эти 2 макроса
Замечательный код. Все работает на ура!
Как заставить его обрабатывать группу файлов? Сейчас при выборе файла csv он берет только один файл.
Добрый день!
Спасибо за данный скрипт. У меня почти все работает, только выгружается не вся информация, т.к первая строка по длинне меньше остальных и все мой 1000 строк выгружаются в шесть колонок.
Что нужно добавить в код, чтобы файл читался со второй строки или обрабатывал массив по максимальной длине строки?
вставляет из csv фаила только 25 строк а остальные 1000 нету?
спасибо за быстрый ответ!
еще интересует как можно последний (М) столбец сделать в виде гиперссылки с заданным названием (ссылка :))
нашел в другом Вашем примере:
' если нужна гиперссылка на файл во втором столбце
ActiveSheet.Hyperlinks.Add Range("b" & Rows.Count).End(xlUp), ПутьКФайлу, "", _
"Открыть файл" & vbNewLine & ИмяФайла
как это добавить в данный скрипт к сожалению не представляю (уже читаю Вашу статью "как я стал программистом" :))
После строки
Set fso = Nothing
добавьте строку
Kill Filename$ ' удаление файла
Благодарю, весьма удобный скрипт.
подскажите, как добавить удаление обработанного CSV файла ?
пробовал след образом:
------------------------
Set FSO = CreateObject("scripting.filesystemobject") ' читаем текст из выбранного файла
Set ts = FSO.OpenTextFile(Filename$, 1, True): txt$ = ts.ReadAll:[B] ts.Delete[/B]
Set ts = Nothing: Set FSO = Nothing
-------------------------
безрезультатно
второй вопрос - как явно указать файл с исходными данными?
Если сами не справитесь - вы всегда можете заказать решение под свои нужды
(выслав мне исходный файл CSV, и пример желаемого результата в Excel)
Здравствуйте. Попробовал использовать макрос при открытии csv с данными техпроцесса. Колонки в файле вида: ДАТА;ПАРАМЕТР;ДАТА;ПАРАМЕТР;. и т.д. Дата нормально идет, а вот со значениями параметров беда. Параметры с одним знаком после запятой импортируются нормально, правда в формате текста. А если параметр имеет 10-12 знаков после запятой, то импортируются всё число, только без запятой, т.е. вместо 893,23764875494 получается 89323764875494. В итоге я хотел получить в колонках параметров только целые числа, но наткнулся на такую засаду.
P.S. В макросах я полный 0. Первый раз столкнулся.
Часто при формировании прайс-листов требуется выгрузить большой объём данных в текстовый файл в формате CSV (разделитель - точка с запятой, или запятая)
И далеко не всегда может помочь сохранение файла в этом формате, поскольку в выгрузку попадают лишние данные (заголовки таблиц, лишние строки и столбцы, и т.д.)
В данном случае поможет экспорт заданного диапазона ячеек в файл CSV, что проще всего сделать макросом с использованием функции Range2CSV:
Вот код самой функции Range2CSV:
Улучшенная версия кода (работает заметно быстрее), и дополнительно заключает текст всех ячеек в кавычки:
Комментарии
Если нужно чтобы выводились данные до первой пустой ячейки первого столбца.:
После строки
If Len(Range2CSV) > 50000 Then buffer$ = buffer$ & Range2CSV: Range2CSV = ""
Добавляем строку:
If arr(i + 1, 1) = "" Then i = UBound(arr, 1) 'Если значение первой ячейки следующей строки массива пустое, то завершаем цикл
Автору спасибо! Много полезной инфы на сайте.
Спасибо огромное за помощь!
Доброго времени суток!
А как сделать,чтоб значения в ячейках выгружались в числовом или денежно формате с двумя знаками после запятой?
Вот например есть 4499795,40 выгружается 4499795,4 или 900 000,00 выгружается 900000
Всё хорошо. Только при импорте файла csv в престашоп возникает ошибка . С чем может быть связана?
спасибо! теперь запускается.
подскажите, почему таблица остается таблицей, а не переходит в вид столбца в выгружаемом файле?
при этом, если в строке
CSVtext$ = Range2CSV(ra, ";")
поменять точку с запятой на запятую, то таблица становится столбцом, но запятые в цифрах при этом путаются с запятыми-разделителями. если же поставить точку, то она будет путаться с точками в дате.
не понимаю, как работает эта последняя функция, поэтому не знаю, как это победить
В статье дана ссылка на функцию SaveTXTfile
Надо было код этой функции тоже вставить в ваш файл - и всё сразу заработает.
на SaveTXTfile пишет Sub or Function not defined
Ну так сделайте цикл, в котором будут просматриваться все строки таблицы.
Пример кода написать не могу, не видя ваш файл.
Если сами не справитесь - можете заказать разработку такого макроса (оформите заказ, прикрепив вашу таблицу, и разъяснив, что и куда должно выгружаться)
Подскажите, пожалуйста, как сделать, чтоб выгружать не сплошной диапазон, а только строки, у которых (например) в 11 колонке написано имя формируемого файла?
В идеале будет генерироваться несколько файлов, имена файлов которых прописаны в 11 колонке. В диапазоне возможно наличие строк, у которых значение равно цифре 0
Спасибо, за оперативный ответ.
В новом файле все заработало. Буду искать где были конфликты.
Отдельное спасибо за полезный ресурс.
Не должна эта строка выдавать ошибку, если только мой макрос не конфликтует с существующими в том же файле вашими макросами.
Попробуйте код на новом файле (в котором нет других макросов), и заново скопируйте необходимые макросы с моего сайта.
Если в новом файле проблема исчезнет - ищите проблему несовместимости в своих макросах.
В строке
txt = "": For j = LBound(arr, 2) To UBound(arr, 2): txt = txt & ColumnsSeparator$ & arr(i, j): Next j
Выделяет (txt =) с коментарием: Expected function or variable
Спасибо за оперативный ответ, попробуем
Ну почему же "код должен быть чисто своим"?
Я вот и чужой код часто использую - просто не удивляюсь, если он работает не совсем так, как хочелось бы, а дорабатываю его под свои нужды.
Я использовал функцию только для выгрузки диапазонов, заведомо не содержащих символа разделителя в обрабатываемых ячейках.
Если такие символы присутствуют - надо знать, как их экранировать.
Тут есть много вариантов:
- предварительно заменить разделитель в ячейке на какой-то другой символ
- заменить разделитель на другой символ только в выгрузке CSV (в ячейке оставить как было)
- экранировать сам символ разделителя (например, текст 123;456 заменить на 123";"456 или на 123/;456)
- экранировать всю ячейку в выгрузке (например, текст 123;456 заменить на "123;456")
- и т.д. и т.п. (при нескольких разделителях в ячейке появляются ещё варианты)
Предусматривать все эти варианты в макросе не очень хочется - объём кода заметно увеличится, а желающих внести какие-то дополнительные "навороты" только прибавится.
В вашем случае всё решалось заменой одной строки кода:
Надо вместо arr(i, j) подставить некую функцию, которая произведёт изменения текста в элементе массива при наличии в нём символов разделителей.
к сожалению не совсем корректно работает Function Range2CSV - если внутри ячейки содержится разделитель (у меня это была сложная гиперссылка) -исходнй ЦээСВэ искажается - при копипасте исохранить в формате csv -всё прекрасно
ну даже не знаю говорить ли спасибо? :) полдня промудохался
СПАСИБО - будет Муку наука - код должен быть чисто своим
Как экспортировать диапазон ячеек в Excel в файл csv?
В Excel мы можем сохранить весь рабочий лист как файл csv, используя Сохранить как функция, но пробовали ли вы когда-нибудь экспортировать диапазон ячеек с одного листа в файл csv? В этой статье вы получите методы решения этой проблемы в Excel.
Экспорт диапазона ячеек в Excel в файл csv с кодом VBA
Здесь у меня есть код VBA для экспорта диапазона ячеек из Excel в файл csv, пожалуйста, сделайте следующее:
1. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код VBA: экспорт диапазона содержимого ячеек в файл csv
3, Затем нажмите F5 нажмите клавишу для запуска этого кода, и появится окно подсказки, напоминающее вам о выборе диапазона ячеек, который вы хотите экспортировать как файл csv.
4, Затем нажмите OK , укажите каталог для размещения нового файла CSV и укажите имя файла CSV в текстовом поле Имя файла, см. снимок экрана:
5. Затем нажмите Сохраните и выбранный диапазон был сохранен как файл csv, вы можете перейти в указанную папку, чтобы просмотреть его.
Экспорт диапазона ячеек в Excel в файл csv с помощью Kutools for Excel
Если вас не интересует код VBA, здесь я могу представить вам простой инструмент - Kutools for Excel, С его Диапазон экспорта в файл функция, вы можете быстро решить эту задачу.
После установки Kutools for Excel, выполните следующие действия:
1. Выберите диапазон данных, который вы хотите экспортировать в файл csv.
2. Затем нажмите Кутулс Плюс > Импорт Экспорт > Диапазон экспорта в файл, см. снимок экрана:
3. В Диапазон экспорта в файл диалоговое окно, выберите CSV (с разделителями-запятыми) из Формат файла вариант, а затем укажите Сохранить каталог чтобы сохранить новый файл CSV, см. снимок экрана:
4. Затем нажмите Ok , появится окно с подсказкой, чтобы напомнить вам указать имя для этого нового CSV-файла, как вам нужно, а затем нажмите OK , чтобы закрыть это окно, и выбранные данные будут сразу экспортированы как файл CSV.
Ноты:
Сохраните фактическое значение: Фактические значения будут отображаться в конечном файле.
Сохраните значения, как показано на экране: Значения в конечном файле будут отображаться так же, как вы читаете их на экране компьютера.
Открыть файл после экспорта: Он автоматически откроет окончательный файл после экспорта диапазона, если вы отметите эту опцию.
Демо: экспорт диапазона ячеек в файл csv / pdf / txt / html с помощью Kutools for Excel
Kutools for Excel: с более чем 300 удобными надстройками Excel, которые можно попробовать бесплатно без ограничений в течение 30 дней. Загрузите и бесплатную пробную версию прямо сейчас!
Как сохранить / экспортировать только отфильтрованные данные из Excel в файл csv?
Как мы все знаем, нам легко сохранить рабочий лист в виде файла csv. Но пробовали ли вы когда-нибудь сохранять только отфильтрованные данные в виде файла csv? Обычно Сохранить как функция В Excel сохранит все данные рабочего листа как файл csv, в этом случае, как вы могли бы сохранить или экспортировать только отфильтрованные данные из Excel в файл csv?
With Kutools for Excel's Export Range to File feature, you can quickly save or export the selected cells to csv, txt, pdf, xlsx, html files as you need.
Kutools for Excel: with more than 200 handy Excel add-ins, free to try with no limitation in 60 days. Download and free trial Now!
Сохранять / экспортировать только отфильтрованные данные из Excel в файл csv с копированием только видимых ячеек
В Excel вы не можете напрямую сохранять отфильтрованные данные в CSV-файл, но вы можете закончить это с помощью обходного пути, сделав следующее:
1. Выберите отфильтрованные данные, которые вы хотите сохранить.
2. Затем нажмите Главная > Найти и выбрать > Перейти к специальному, см. снимок экрана:
3. В Перейти к специальному диалоговое окно, выберите Только видимые ячейки вариант, см. снимок экрана:
4. Затем нажмите OK кнопку, а затем скопируйте и вставьте отфильтрованные данные на новый рабочий лист, и только отфильтрованные данные будут вставлены в новый рабочий лист.
5. Теперь вы можете сохранить этот новый рабочий лист как файл csv, нажмите Файл > Сохранить как, В Сохранить как диалоговом окне укажите имя и расположение для этого файла и выберите CVS (с разделителями-запятыми) из Сохранить как выпадающий список, см. снимок экрана:
Сохранять / экспортировать только отфильтрованные данные из Excel в файл csv с кодом VBA
Это может быть неэффективным способом использования вышеуказанного метода, здесь я могу создать код VBA, который поможет вам быстро и удобно экспортировать отфильтрованные данные в файл csv.
1. Удерживайте Alt + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модули, и вставьте следующий макрос в Модули Окно.
Код VBA: сохранение / экспорт только отфильтрованных данных из Excel в файл csv
3, Затем нажмите F5 нажмите клавишу для запуска этого кода, и появится окно подсказки, напоминающее вам о выборе отфильтрованных данных, которые вы хотите сохранить только как файл csv, см. снимок экрана:
4. Затем нажмите OK , и появится еще одно поле, напоминающее вам указать имя файла и местоположение для вашего CSV-файла, см. снимок экрана:
5, Затем нажмите Сохраните Кнопка, только отфильтрованные данные сохраняются как файл csv.
Сохранение / экспорт только отфильтрованных данных из Excel в файл csv Kutools for Excel
Kutools for Excel содержит полезный инструмент -Диапазон экспорта в файл, он может помочь вам экспортировать или сохранить диапазон выбранных ячеек в CSV, PDF, текстовые и другие файлы форматирования.
После установки Kutools for Excel, пожалуйста, сделайте следующее:
1. Выберите отфильтрованные данные для экспорта.
2. Нажмите Кутулс Плюс > Импорт Экспорт > Диапазон экспорта в файл, см. снимок экрана:
3. В Диапазон экспорта в файл диалоговом окне выберите формат файла, который вы хотите сохранить, под Формат файла, затем щелкните кнопку, чтобы выбрать папку для сохранения экспортированного файла, см. снимок экрана:
4. Затем нажмите Ok , и появится другое окно подсказки, напоминающее вам ввести имя для экспортированного файла, см. снимок экрана:
5, Затем нажмите Ok, и только выбранные отфильтрованные данные были сохранены как файл csv по мере необходимости.
Демо: сохранение / экспорт только отфильтрованных данных из Excel в файл csv Kutools for Excel
Kutools for Excel: с более чем 300 удобными надстройками Excel, которые можно попробовать бесплатно без ограничений в течение 30 дней. Загрузите и бесплатную пробную версию прямо сейчас!
Читайте также: