Excel自動化 2026-06-16

複数のExcelファイルを一括集計するマクロの作り方|フォルダ内を自動でまとめる

「店舗ごと・担当者ごとに分かれた何十個ものExcelファイルを、毎月ひとつずつ開いてコピペし、ひとつの集計表にまとめている」——こうした作業は、ファイルが増えるほど時間がかかり、コピペ漏れや行ずれといったミスも起きやすくなります。

この記事では、フォルダ内にある複数のExcelファイルを一括で集計するマクロ(VBA)の作り方を、考え方から実装の流れ、つまずきやすい点まで具体的に解説します。コードの全文ではなく「何をどう組み立てるか」が分かることを目指した内容です。

手作業で複数ファイルを集計する課題

複数のExcelファイルを手作業でまとめると、次のような負担が積み重なります。

これらは、フォルダ内のファイルを自動で順に処理する仕組みにすればまとめて解消できます。

自動化の考え方|処理の流れを順序立てて整理する

マクロを書く前に大切なのは、人が手でやっている作業を「手順」に分解することです。複数ファイルの集計は、突き詰めると次の流れのくり返しです。

この「順に開く→取得→転記→閉じる→くり返す」という流れさえ固まれば、あとはそれをVBAの命令に置き換えていくだけです。

VBAでの実装ステップ(概念とコード断片)

ここからは、先ほどの手順をVBAでどう書くかを要点だけ示します。長いコード全文ではなく、各ステップで使う中心的な命令を押さえておけば、組み立てのイメージがつかめます。

ステップ1|フォルダ内のファイルを列挙する(Dir関数)

フォルダの中のファイル名を順に取り出すにはDir関数を使います。最初の呼び出しで条件に合う最初のファイル名、次からは引数なしで呼ぶと次のファイル名が返り、なくなると空文字になります。

fileName = Dir(folderPath & "\*.xlsx") のように拡張子で対象を絞り、Do While fileName <> "" でループを回すのが基本形です。

ステップ2|ブックを開く(Workbooks.Open)

取り出したファイル名から、Set wb = Workbooks.Open(folderPath & "\" & fileName) でブックを開きます。開いたブックは変数wbに入れておくと、後で範囲指定や閉じる処理がやりやすくなります。

ステップ3|必要な範囲を取得して転記する

開いたブックの対象シート・範囲を、まとめ先ブックへ写します。1セルずつではなく範囲ごと値を渡すと高速です。擬似コードで書くと次のイメージです。

「どのシートのどの範囲を読むか」をファイルごとに固定できるかが、シンプルに作れるかどうかの分かれ目です。

ステップ4|閉じて次へ、最後に保存

転記が終わったらwb.Close SaveChanges:=False で元ファイルを変更せずに閉じます。ループの最後に fileName = Dir を置くと次のファイル名が得られ、ループが続きます。全ファイル終了後、まとめ先ブックを保存して完了です。

全体の骨組みを擬似コードで示すと、次のようになります。

つまずきやすい点と対策

実際に作ると、次のような点でつまずきがちです。あらかじめ想定しておくと安定したマクロになります。

自分で作るのが難しい場合の外注の目安

考え方はシンプルでも、ファイル形式の違いやエラー処理まで含めて「毎月安心して回せる」マクロに仕上げるには、相応の知識と検証が必要です。次に当てはまるなら、外注を検討する価値があります。

当サービスでは、複数ファイルの一括集計マクロの作成は内容により5,000円〜を目安としています(ファイル数・形式のばらつき・必要な処理の複雑さにより変動します)。正式な料金は内容を確認のうえお見積もりします。費用感は料金表もあわせてご覧ください。実際にどれくらい時短できるかは対応事例も参考になります。

なお、ファイル間の単純な転記の自動化についてはExcelの転記作業を自動化する3つの方法でも解説しています。あわせてご覧ください。

まとめ

複数のExcelファイルを一括集計するマクロは、「フォルダ内のファイルを順に開く→必要な範囲を取得→集計表へ転記→閉じる→くり返して保存」という流れに分解すれば、VBAのDir関数・Workbooks.Open・ループ処理で実現できます。ポイントは、ファイル形式や見出し行を揃え、エラー処理を入れて止まらない作りにすることです。「自分のファイル構成でうまく作れるか不安」という場合は、無理に作り込まずご相談ください。構成に合わせて、安定して回せる集計マクロをご提案します。