При создании файла 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 = ""

For j = 2 To Range("HA1").End(xlToLeft).Column             If j <> Range("HA1").End(xlToLeft).Column Then                 TempString = TempString & _                   Cells(i, j).Value & ";"

Else                 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.Paste     Application.CutCopyMode = False

ActiveWorkbook.SaveAs Filename:=FName & ".txt", _       FileFormat:=xlPrinter End Sub

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

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

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

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

_Примечание: _

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

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3232) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:

link: / excelribbon-Specifying_a_Delimiter_when_Saving_a_CSV_File_in_a_Macro [Указание разделителя при сохранении файла CSV в макросе].