Указание разделителя при сохранении файла CSV в макросе

При создании файла CSV с использованием меню для экспорта рабочего листа Аркадиуш отметил, что он может указать, что он хочет использовать точку с запятой (;) в качестве разделителя полей. Однако, если он сохраняет файл CSV с помощью макроса (FileFormat: = xlCSV или xlCSVWindows), он не может указать точку с запятой в качестве разделителя.

Это работает в VBA таким образом. Реализация в Excel подпрограмм экспорта для VBA всегда использует любые региональные настройки Windows, чтобы определить, как следует разделять элементы в CSV. В частности, подпрограмма ищет разделителя в поле «Разделитель списка». Это означает, что при желании вы можете изменить разделитель на точку с запятой, изменив параметр «Разделитель списка» в конфигурации региональных параметров.

Если вы не хотите изменять региональные параметры, тогда вы можете вместо этого вы можете написать свой собственный макрос, который будет выводить файл любым удобным для вас способом. Рассмотрим на мгновение следующий макрос, который будет выводить файл:

 Sub CreateFile () FName = ActiveWorkbook.Name If Right (FName, 4) = ".xls" Then FName = Mid  (FName, 1, Len (FName) - 4) End If Columns (1) .Insert Shift: = xlToRight For i = 1 To Range ("B65000"). End (xlUp) .Row TempString = "" Для j = 2  To Range ("HA1"). End (xlToLeft) .Column If j  Range ("HA1"). End (xlToLeft) .Column Then TempString = TempString & _ Cells (i, j) .Value & ";"  Иначе TempString = TempString & _ Cells (i, j). Value End If Next Cells (i, 1) .Value = TempString Next Columns (1) .Select Selection.Copy Workbooks.Add Range ("A1"). Select ActiveSheet.  Вставить Application.CutCopyMode = False ActiveWorkbook.SaveAs Имя файла: = FName & ".txt", _ FileFormat: = xlPrinterEnd Sub 

Этот макрос использует уникальный подход к созданию выходного файла. Что он делает, так это вставляет столбец слева от вашего рабочего листа, а затем объединяет все данные справа от этого столбца во вновь вставленный столбец A. Он добавляет точку с запятой между каждым полем. Как только это будет сделано, он получает информацию, которую поместил в столбец A, и записывает ее в новую книгу. Затем эта книга сохраняется на диск в формате файла xlPrinter, что означает, что она публикуется «как есть» без каких-либо изменений.

Если вы предпочитаете более прямой подход, записывайте информацию напрямую в файл, не внося изменений в рабочий лист, взгляните на макрос в этом сообщении в блоге:

 https://web.archive.org/web/20060302021412/http:/www.dicks  -blog.com:80/archives/2004/11/09/roll-your-own-csv/

Макрос использует запятые между каждым полем, но его можно легко изменить, чтобы он использовал точки с запятой.

Оцените статью
Frestage.ru
Добавить комментарий