Excelで指定フォルダ内のCSVファイルを一括取り込みする方法。VBA・サンプルコードあり。

目次

複数のCSVファイルを1つのファイルにまとめたい

やりたいこと

Excelで、対象フォルダ内にあるすべてのCSVファイルからデータをシートとして抽出したい。
csvファイル名をシート名とする。
フォルダはダイアログで選択できるようにする。

こんなとき

複数のCSVファイルを開いてコピペするのが面倒なとき。
1年分のCSVデータを1つのファイルにまとめたいとき。

VBAコード

以下のVBAコードを使用すると、対象フォルダ内のすべてのCSVファイルからデータを抽出し、それぞれのCSVファイル名をシート名として新しいシートにデータを取り込みます。フォルダ選択はダイアログを通じて行えます。

  • ダイアログでフォルダ選択
  • フォルダ内のCSVファイルを読み込み、シートとして追加
  • シート名はCSVファイル名
  • 10個のCSVファイルがあれば、10シート追加される
Sub フォルダ内のCSVファイルを一括でシートに取り込む()
Dim folder As String
With Application.FileDialog(msoFileDialogFolderPicker) 'フォルダ選択ダイアログ
If .Show = False Then Exit Sub 'キャンセルなら終わり
folder = .SelectedItems(1) & "\" 'フォルダ+"\"
End With
'
Dim file As String
Dim wb As Workbook
file = Dir(folder & "*.csv") 'フォルダ内の最初のcsvファイル名
Do While file <> "" 'ファイル名がある間
Set wb = Workbooks.Open(folder & file) 'csvをExcelで開く
wb.Sheets(1).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 'このBookも最後に移動
file = Dir '次のファイル名
Loop
End Sub

コードの動作説明

  1. フォルダ選択ダイアログの表示
    マクロ実行時にCSVファイルのあるフォルダを選択。
  2. CSVファイルの読み込み
    選択したフォルダ内のすべてのCSVファイルを順に開いて処理。
    (CSV以外のファイルは無視)
  3. ファイル名をシート名として追加
    • CSVファイル名(拡張子なし)をシート名として新しいシートを作成。
    • シート名がすでに存在する場合は、「ファイル名(2)」としてシートを追加。
    • 例:ファイル名「2022-12.csv」→シート名「2022-12」
  4. CSVファイルを開いてデータをコピー
    各CSVファイルを開き、データを該当するシートにコピー。
  5. CSVファイルを閉じる
    データをコピー後、CSVファイルを閉じる。
  6. CSVファイルの一括取り込み完了
    • 複数CSVの内容が、1つのファイルにシート毎にまとまる。

VBA使用手順

  1. ExcelでVBAエディター(Alt + F11)を開き、標準モジュールにコードを貼り付け。
  2. Excelに戻り、「Alt + F8」を押してマクロの一覧を表示。
  3. フォルダ内のCSVファイルを一括でシートに取り込む を選択して「実行」。
  4. 表示されたフォルダ選択ダイアログで、CSVファイルが保存されているフォルダを選択。
  5. フォルダ内のCSVファイルが順次開かれ、データ抽出後に自動で閉じます。

注意

フォルダ内の大量のファイルがあると、動作完了まで遅くなる+シートが大量に生成されます。
まずは2-3ファイルで動作テストを推奨します。

記事について

当サイトは、主に自分用の備忘録として情報をまとめています。個別の質問にはお答えできません。
紹介するコードや設定をご参考の際は、ご自身の責任においてご利用ください。編集や実行によるいかなる損害・不具合についても、当サイトは責任を負いかねます。
必ず事前にバックアップを取り、安全に作業を行ってください。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次