Excelブックの各シートをCSV出力することがあったので、楽できないかと思って取り組んだメモ
検証環境
コード
個人用マクロブックに標準モジュールとして登録します。
Option Explicit Sub ワークシートを一括でCSV化() Dim savePath As String Dim sheetCnt As Integer Dim i As Integer Dim tmpSheet As Worksheet Dim sheetName As String savePath = 保存フォルダを設定 If savePath = "" Then MsgBox "キャンセルされました" Exit Sub End If sheetCnt = ActiveWorkbook.Worksheets.Count For i = 1 To sheetCnt Set tmpSheet = ActiveWorkbook.Worksheets(i) tmpSheet.Activate sheetName = tmpSheet.Name ActiveWorkbook.SaveAs Filename:=savePath & "\" & sheetName & ".csv", _ FileFormat:=xlCSVUTF8, CreateBackup:=False Set tmpSheet = Nothing Next End Sub Function 保存フォルダを設定() Dim folderDialog As Object Dim savePath As String Set folderDialog = Application.FileDialog(msoFileDialogFolderPicker) savePath = "" If folderDialog.Show Then savePath = folderDialog.SelectedItems(1) Debug.Print savePath Else Debug.Print "キャンセルされました" End If Set folderDialog = Nothing 保存フォルダを設定 = savePath End Function
実行例
↓こんなブックが
↓こんな感じで1シート1CSVになります。(Office2016だとCSVはUTF8BOMありなんですね)
補足
「msoFileDialogFolderPicker」が見つからないと言われたら、参照設定を確認。
「Microsoft Office XX(バージョンによって違う) Object Library」