エクセルのデータを統合したいけど、いちいち開けるのは面倒
沢山あるエクセルのどこに必要なデータがあるかわからない…
たくさんあるエクセルを一つずつ開けて確認する手間がかかりますよね。溜まってしまうと、ほしいデータを見つけるだけで、かなりの時間がかかってしまいます。
そんな時に便利なのが、今回紹介するエクセル統合VBAです。このVBAでは、フォルダに入っているエクセルファイルを一つのエクセルにまとめることができます。これにより検索性が格段に向上します。さらに、目次作成VBAを使用することで、一覧を作成しより見やすいファイルが作成できます。
この記事ではVBAが使えない人でもわかるように、コピペで使えるコードを使って環境設定から紹介しています。ぜひこの記事を参考に、VBAの効率化を行ってみてください。
【結論】コピペで使えるエクセル統合VBA
以下のコードをコピペするだけで、指定したフォルダ内のエクセルファイルを一つに統合できます。
各エクセルのシートを一つのエクセルのシートに追加して統合が可能です。
Sub ImportXLSXFilesToExcel()
Dim folderPath As String
Dim targetFile As String
Dim wb As Workbook ' 統合先(新規)ブック
Dim targetBook As Workbook ' コピー元(各ファイル)ブック
Dim ws As Worksheet ' コピー元シート
Dim fileDialog As Object
' 画面のチラつきを抑える設定
Application.ScreenUpdating = False
' フォルダ選択ダイアログを表示
Set fileDialog = Application.fileDialog(msoFileDialogFolderPicker)
fileDialog.Title = "Excelファイル(xlsx)が入っているフォルダを選択してください"
If fileDialog.Show = -1 Then
folderPath = fileDialog.SelectedItems(1)
Else
MsgBox "フォルダが選択されていません。処理を中止します。"
Exit Sub
End If
' 新しいワークブックを作成(ここに集約)
Set wb = Workbooks.Add
' フォルダ内のxlsxファイルを順番に処理
targetFile = Dir(folderPath & "\*.xlsx")
Do While targetFile <> ""
' 自身のファイル(マクロ実行中のファイル)や一時ファイルを除外する簡易チェック
If targetFile <> ThisWorkbook.Name And Left(targetFile, 2) <> "~$" Then
' Excelファイルを開く
Set targetBook = Workbooks.Open(folderPath & "\" & targetFile)
'そのブック内の「全てのシート」をループしてコピー
For Each ws In targetBook.Worksheets
ws.Copy After:=wb.Sheets(wb.Sheets.Count)
Next ws
' コピー元ファイルを閉じる(保存しない)
targetBook.Close False
End If
' 次のファイルを取得
targetFile = Dir
Loop
' 初期シート(新規作成時にある空白シート「Sheet1」)を削除
Application.DisplayAlerts = False
If wb.Sheets.Count > 1 Then
wb.Sheets(1).Delete
End If
Application.DisplayAlerts = True
' 設定を戻す
Application.ScreenUpdating = True
MsgBox "Excelファイルの全シート統合が完了しました!"
End Sub
Office付きで有料AIを月1800円以下で使う方法をコチラで紹介しています!
【番外】すぐ使えるエクセルファイル
VBAが分からないという方向けに、VBAが入ったエクセルファイルを用意しました。ダウンロードしてフォルダを選択するだけで、CSVファイルの統合ができます。
ファイルはnoteにて販売しています。すぐに活用したいという方はそちらを確認してください。

【さらにお得】効率化ツール全セット版も公開中!
Outlook操作やファイル整理など、今後追加されるツールもすべて使い放題になる「まとめ買いセット」も紹介しています。
複数使う予定の方は、こちらの方が圧倒的にお得です。

エクセル統合VBAの動作
フォルダに入っているCSVを、一つのエクセルファイルにまとめるVBAになります。新しいエクセルにコードを打ち込んで使用します。

Office付きで有料AIを月1800円以下で使う方法をコチラで紹介しています!
エクセル統合VBAの使い方
フォルダの準備
はじめに、統合したいエクセルを一つのフォルダにまとめます。なお、xlsxファイル以外は読み込まれません。

VBAの埋め込み/ボタンの挿入
エクセルの「開発」タブから「Visual Basic」エディタを開きます。そしてVBAコードを「標準モジュール」に貼り付けます。
「開発」を出す設定やコードの書き方は、VBAの基礎まとめのページで詳しく解説しています。こちらの記事もぜひ参考にしてみてください。
実行・実行後の結果
[F5]を押すとマクロが実行されます。フォルダ選択ダイアログが表示されるので、先ほどまとめたフォルダを選択します。
なお、フォルダ内に入っているエクセルファイルは表示されません。表示されなくても、ファイルがあっていればOKを押してください。

それぞれのエクセルが一つになって、保存されます。なお、シート名が被った場合は、(1)、(2)という形で保存されます

【発展】リンク付き目次作成VBAとの組み合わせ
リンク付き目次作成VBAを使用すると、シート名の一覧をリンク付きで作成することができます。
エクセルを一つにまとめて、目次シートからリンクで飛べるようになるので、とても便利なVBAとなります。

リンク付き目次作成VBAは下記で詳しく紹介しています。ぜひこちらも参考にしてみてください。
まとめ
エクセルの統合は、パワークエリやPower BIでも行うことができます。どちらもコードが不要なので初心者向きに見えますが、実はVBAが一番手順が少なく簡単なやり方です。コードさえ用意できれば、あとは貼り付け→実行で動作ができるので、一番おすすめです。
このブログでは、このように日常業務が楽になるテクニックから、VBA等のスキルになる情報まで幅広く紹介しています。また現在、Office+生成AIを2年間月1800円以下で使える、お得なキャンペーンをMicrosoftが実施しています。裏技的なやり方ですが大変お得なキャンペーンなので、興味がある方はぜひこの記事も参考にしてみてください!
MicrosoftのOffice+生成AIが月1800円以下で使えるお得な裏技はコチラ!







コメント