Указание разделителя при сохранении файла CSV в макросе (Microsoft Excel)
При создании файла 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 в макросе]
.