サイトアイコン 効率化大全

【コピペで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

※当サイトで紹介している他のコピペコードは、コチラにまとめています!

【番外】すぐ使えるエクセルファイル

VBAが分からないという方向けに、VBAが入ったエクセルファイルを用意しました。ダウンロードしてフォルダを選択するだけで、CSVファイルの統合ができます。

ファイルはnoteにて販売しています。すぐに活用したいという方はそちらを確認してください。

note ご指定のページが見つかりません

エクセル統合VBAの動作

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

※動作イメージ/複数のエクセルが、一つのエクセルにシートごとに保存される

業務効率化におすすめ書籍『9選』はコチラから!

エクセル統合VBAの使い方

フォルダの準備

はじめに、統合したいエクセルを一つのフォルダにまとめます。なお、xlsxファイル以外は読み込まれません

VBAの埋め込み/ボタンの挿入

エクセルの「開発」タブから「Visual Basic」エディタを開きます。そしてVBAコードを「標準モジュール」に貼り付けます。

「開発」を出す設定コードの書き方は、VBAの基礎まとめのページで詳しく解説しています。こちらの記事もぜひ参考にしてみてください。

実行・実行後の結果

[F5]を押すとマクロが実行されます。フォルダ選択ダイアログが表示されるので、先ほどまとめたフォルダを選択します。

なお、フォルダ内に入っているエクセルファイルは表示されません。表示されなくても、ファイルがあっていればOKを押してください。

※フォルダ選択画面。フォルダを正しく選択しても、エクセルファイルは表示されないので注意

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

【発展】リンク付き目次作成VBAとの組み合わせ

リンク付き目次作成VBAを使用すると、シート名の一覧をリンク付きで作成することができます。

エクセルを一つにまとめて、目次シートからリンクで飛べるようになるので、とても便利なVBAとなります。

※リンク付き目次サンプル。シート名の一覧をリンク付きで自動作成できる。

リンク付き目次作成VBAは下記で詳しく紹介しています。ぜひこちらも参考にしてみてください。

まとめ

エクセルの統合は、パワークエリやPower BIでも行うことができます。どちらもコードが不要なので初心者向きに見えますが、実はVBAが一番手順が少なく簡単なやり方です。コードさえ用意できれば、あとは貼り付け→実行で動作ができるので、一番おすすめです。

今回紹介したようなVBAスキルは、一度身につければ一生使える武器となります。コピペも便利ですが、本で体系的に学ぶことで「自分でコードを書く力」を短期間で身につけられます。

以下の記事では、Kindle Unlimited(読み放題)無料で読めるおすすめのVBA書籍を厳選して紹介しています。生成AIを前提とした、今までとは全く違ったVBA学習法も紹介しているので、是非チェックしてみてください!

 VBA初心者におすすめの『5冊』はこちら!

モバイルバージョンを終了