Vba: как сохранить листы в виде файлов csv (с примером)
Вы можете использовать следующий синтаксис в VBA, чтобы сохранить каждый лист книги в файл CSV:
Sub SaveCSV()
Dim Ws As Worksheet
Dim SaveDir As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
'specify directory to save CSV files in
SaveDir = " C:\Users\bobbi\OneDrive\Desktop\ "
'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
End Sub
Этот конкретный макрос сохранит каждый лист активной в данный момент книги в файл CSV.
Файлы CSV будут сохранены по пути, указанному в переменной SaveDir .
Примечание . Строка Application.DisplayAlerts=False сообщает VBA о необходимости временно отключить все отображаемые оповещения в Excel при сохранении файлов.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: сохранение листов в виде файлов CSV с использованием VBA
Предположим, у нас есть книга Excel с двумя листами.
Первый лист называется player_stats и содержит статистику о разных баскетболистах:
Второй лист называется team_info и содержит информацию о разных баскетбольных командах:
Допустим, мы хотим сохранить каждый из этих листов в виде отдельных файлов CSV на рабочем столе нашего компьютера.
Для этого мы можем создать следующий макрос:
Sub SaveCSV()
Dim Ws As Worksheet
Dim SaveDir As String
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
'specify directory to save CSV files in
SaveDir = " C:\Users\bobbi\OneDrive\Desktop\ "
'save each sheet to individual CSV file
For Each Ws In Application.ActiveWorkbook.Worksheets
Ws.SaveAs SaveDir & Ws.Name, xlCSV
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
End Sub
После выполнения этого макроса каждый лист будет сохранен в виде файла CSV на нашем рабочем столе.
Если я перейду на рабочий стол своего компьютера, я увижу каждый из этих отдельных файлов CSV с именами файлов, соответствующими именам листов:
Если я открою CSV-файл player_stats с помощью Блокнота, я увижу, что значения в файле Excel были сохранены как значения, разделенные запятыми:
Обратите внимание, что в этом примере мы смогли сохранить два листа в нашей книге как отдельные файлы CSV, но этот же макрос будет работать с любым количеством листов.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как посчитать количество листов в книге
VBA: как извлечь данные из другой книги
VBA: как добавить новые листы