【VBA】フォルダ内の複数ExcelファイルからD列の値を取得してリスト化する方法|Do While ループで一括処理

目次

経緯

日々の業務で、「複数のExcelファイルに共通項目が含まれていて、それらを一括で集計したい」と思う場面がありました。
特に、各ExcelファイルのD列(4列目)のデータを1つのシートにまとめたいと考え、今回VBAで自動化する方法を学習しました。


やりたいこと

  • 指定フォルダ内のすべてのExcelファイル(拡張子:xls, xlsx, xlsm)を対象にする
  • 各ファイルの1枚目のシートのD列を取得
  • それらを1つのExcelシートにリストとしてまとめる

実装コード(VBA)

以下が、目的を達成するためのVBAコードになります。

Sub GetExcelFiles()

    Dim FolderPath As String
    Dim FileName As String
    Dim OutputWorkbook As Workbook
    Dim OutputWorksheet As Worksheet
    Dim SourceWorkbook As Workbook
    Dim SourceWorksheet As Worksheet
    Dim NextOutputRow As Long
    Dim LastRow As Long

    ' 対象のフォルダパスを指定(最後の \ を忘れずに)
    FolderPath = "C:\Path\to\your\folder\"

    ' 出力先ブックとシートの設定
    Set OutputWorkbook = ThisWorkbook
    Set OutputWorksheet = OutputWorkbook.Sheets("Sheet1")

    ' 書き込み開始行
    NextOutputRow = 1

    ' フォルダ内のすべてのExcelファイルを検索
    FileName = Dir(FolderPath & "*.xls*")

    Do While FileName <> ""
        ' 対象のExcelファイルを開く
        Set SourceWorkbook = Workbooks.Open(FolderPath & FileName)
        Set SourceWorksheet = SourceWorkbook.Sheets(1)

        ' D列の最終行を取得
        LastRow = SourceWorksheet.Cells(SourceWorksheet.Rows.Count, "D").End(xlUp).Row

        ' D列のデータを出力用ワークシートにコピー
        SourceWorksheet.Range("D1:D" & LastRow).Copy OutputWorksheet.Range("A" & NextOutputRow)

        ' 次に書き込む行番号を更新
        NextOutputRow = OutputWorksheet.Cells(OutputWorksheet.Rows.Count, "A").End(xlUp).Row + 1

        ' 元ファイルを閉じる
        SourceWorkbook.Close SaveChanges:=False

        ' 次のファイルへ
        FileName = Dir
    Loop

    MsgBox "D列の集計が完了しました。", vbInformation

End Sub

実行前の注意点

  • FolderPath を実際のフォルダパスに変更してください(例:C:\Users\user\Documents\ExcelData\
  • 出力先は Sheet1 に指定されています。シートが存在しない場合は作成しておく必要があります
  • コピー元ファイルのD列が空であると、空のセルも出力される可能性があります

処理の流れまとめ

  1. 指定フォルダをスキャン
  2. 拡張子が .xls, .xlsx, .xlsm のファイルを順に開く
  3. 各ファイルの1枚目のシートのD列を読み取り
  4. 出力ブックの Sheet1 に、順番に転記
  5. すべてのファイルを処理し終えたら完了

まとめ

このVBAコードを使えば、手動でファイルを開いてコピーする作業を完全に自動化することができます。
特に、定型的に集計が必要な月次・週次業務などで大活躍するはずです。

最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次