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: как добавить новые листы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *