【Excelマクロ】特定フォルダ内のExcelを一括で読み込む

ファイルをまとめて読み込みたい

業務で複数のExcelファイルを一括処理したい場面はよくあります。

たとえば、毎月届く売上データや、各支店から集められた報告書など、ひとつひとつ開いてコピーしていては時間がかかって仕方ありません。

そこで今回は、特定のフォルダ内にあるExcelファイルを自動で読み込み、データをまとめて処理するマクロを紹介します。

処理の流れと考え方

このマクロでは、次のような流れで処理を進めます。

  1. 特定のフォルダを指定
  2. フォルダ内のExcelファイルを1つずつ開く
  3. 必要なデータをメインのシートに書き出す
  4. ファイルを閉じて、次のファイルへ

このようにすることで、毎回フォルダに入れるだけで自動処理が可能になります。

コード例

次に示すのが、実際に使えるコードです。

Sub ImportExcelFiles()

    Dim fPath As String
    Dim fName As String
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim destWs As Worksheet
    Dim lastRow As Long
    Dim pasteRow As Long

    ' 結果をまとめるシートを指定
    Set destWs = ThisWorkbook.Sheets("Summary")
    pasteRow = 2 ' 2行目から書き込み(1行目は見出し)

    ' フォルダパスを指定(適宜変更してください)
    fPath = "C:¥データ¥取込フォルダ¥"

    ' 最初のファイル名を取得
    fName = Dir(fPath & "*.xls*")

    Do While fName <> ""

        ' 対象ファイルを開く
        Set wb = Workbooks.Open(fPath & fName)
        Set ws = wb.Sheets(1) ' 1枚目のシートと仮定

        ' 読み込むデータの最終行を取得(A列想定)
        lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

        ' データをコピーして貼り付け
        ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, 3)).Copy
        destWs.Cells(pasteRow, 1).PasteSpecial Paste:=xlPasteValues

        ' 次の貼り付け開始行を更新
        pasteRow = destWs.Cells(destWs.Rows.Count, 1).End(xlUp).Row + 1

        ' 閉じる(保存なし)
        wb.Close SaveChanges:=False

        ' 次のファイルへ
        fName = Dir

    Loop

    MsgBox "読み込み完了!"

End Sub

コードのポイント

  • Dir関数でファイルを順に取得しています
  • Workbooks.Openで1つずつ開きます
  • PasteSpecialを使って値だけ貼り付け
  • 処理ごとにファイルを閉じてメモリを節約(速度アップ)

実装するメリット

このようなマクロを使うことで、次のようなメリットがあります。

  • 毎回開いてコピーする手間が省ける
  • 作業時間が大幅に短縮される
  • ミスが減る(コピペのズレや漏れ)
  • 定期的な処理を自動化できる

また、フォルダに入れるだけで処理ができる仕組みは、Excelが苦手な人でも使える運用として非常に有効です。

まとめ

フォルダ内のExcelファイルを一括で読み込むことで、毎月の作業や大量データの処理が一気に効率化されます。

  • Dir関数でファイルを1つずつ取得
  • 開いてデータを取り出し、貼り付け
  • 繰り返して処理完了

もちろん、前提としては、取り込むファイルが同じ形式である必要があるので、どの列に何のデータがあるかのフォーマットを作成し、たとえば、支店ごとに集計したいなどの場合には、支店に対し同一のフォーマットを利用してもらう準備が必要です。

その準備や浸透の手間を考えても、将来的には時間削減ができるため、このような仕組みを一度作ってしまえば、その後の作業時間が大きく減り、他の業務に集中できるようになります。

ぜひ、業務の自動化に活用してみてください!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール