Vba: jak zapisywać arkusze jako pliki csv (z przykładem)


Możesz użyć następującej składni w VBA, aby zapisać każdy arkusz skoroszytu w pliku 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

To konkretne makro zapisze każdy arkusz aktualnie aktywnego skoroszytu w pliku CSV.

Pliki CSV zostaną zapisane w ścieżce określonej w zmiennej SaveDir .

Uwaga : Linia Application.DisplayAlerts=False informuje VBA o tymczasowym wyłączeniu wszystkich alertów wyświetlania w programie Excel podczas zapisywania plików.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: zapisywanie arkuszy jako plików CSV przy użyciu języka VBA

Załóżmy, że mamy skoroszyt programu Excel zawierający dwa arkusze.

Pierwszy arkusz nazywa się player_stats i zawiera statystyki dotyczące różnych koszykarzy:

Drugi arkusz nosi nazwę team_info i zawiera informacje o różnych drużynach koszykarskich:

Załóżmy, że chcemy zapisać każdy z tych arkuszy jako osobne pliki CSV na pulpicie naszego komputera.

W tym celu możemy utworzyć następujące makro:

 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

Po wykonaniu tego makra każdy arkusz zostanie zapisany jako plik CSV na naszym pulpicie.

Jeśli wejdę na pulpit mojego komputera, zobaczę każdy z tych pojedynczych plików CSV z nazwami plików pasującymi do nazw arkuszy:

Jeśli otworzę plik CSV player_stats za pomocą Notatnika, widzę, że wartości w pliku Excel zostały zapisane jako wartości oddzielone przecinkami:

Zauważ, że w tym przykładzie udało nam się zapisać dwa arkusze w naszym skoroszycie jako osobne pliki CSV, ale to samo makro będzie działać z dowolną liczbą arkuszy.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:

VBA: Jak policzyć liczbę arkuszy w skoroszycie
VBA: Jak wyodrębnić dane z innego skoroszytu
VBA: Jak dodać nowe arkusze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *