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