【コピペでOK】VBAでフォルダ内エクセルを一括統合!コピペで使えるコード紹介!

コピペで使えるコード集

エクセルのデータを統合したいけど、いちいち開けるのは面倒
沢山あるエクセルのどこに必要なデータがあるかわからない…

たくさんあるエクセルを一つずつ開けて確認する手間がかかりますよね。溜まってしまうと、ほしいデータを見つけるだけで、かなりの時間がかかってしまいます。

そんな時に便利なのが、今回紹介するエクセル統合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にて販売しています。すぐに活用したいという方はそちらを確認してください。

note ご指定のページが見つかりません
【さらにお得】効率化ツール全セット版も公開中!

Outlook操作やファイル整理など、今後追加されるツールもすべて使い放題になる「まとめ買いセット」も紹介しています。

複数使う予定の方は、こちらの方が圧倒的にお得です。

▼ 効率化ツール全セットはこちら

【DLで使える!】Excel・Outlookの「単純作業」自動化ツール|犬井 | 効率化大全
※2025/1/7にエクセルファイル/CSVの統合ツールを追加しました! 購入いただいた方は、追加ツールは追加費用なしでダウンロード可能です! Outlookで、宛先と添付ファイルだけを変えた似たようなメールの作成『202501_請求書』の...

エクセル統合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+生成AI2年間月1800円以下で使える、お得なキャンペーンをMicrosoftが実施しています。裏技的なやり方ですが大変お得なキャンペーンなので、興味がある方はぜひこの記事も参考にしてみてください!

MicrosoftのOffice+生成AIが月1800円以下で使えるお得な裏技はコチラ

コメント

タイトルとURLをコピーしました