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行は、ファイルを保存するときに Excel のすべての表示アラートを一時的に無効にするように VBA に指示します。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA を使用してシートを CSV ファイルとして保存する
2 つのシートがある Excel ワークブックがあるとします。
最初のシートはplayer_statsと呼ばれ、さまざまなバスケットボール選手に関する統計が含まれています。
2 番目のシートは、 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 ファイルが表示されます。
メモ帳を使用してplayer_stats CSV ファイルを開くと、Excel ファイル内の値がカンマ区切り値として保存されていることがわかります。
この例では、2 つのシートを個別の CSV ファイルとしてワークブックに保存できましたが、この同じマクロは任意の数のシートで機能することに注意してください。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: ワークブック内のシート数を数える方法
VBA: 別のブックからデータを抽出する方法
VBA: 新しいシートを追加する方法