Excel VBA:指定フォルダ内の全Excelファイルからシートを統合する方法

この記事では、指定されたフォルダ内の全Excelブックからシートを1つのブックに効率的にコピーする方法をExcel VBAを使って簡単に説明します。

指定フォルダ内の各ブックのシートを1つのブックにまとめたいんですが、どうしたらいいですか?

Excel VBAを使用して、その作業を自動化する方法がありますよ。

目次

受講者数No.1!初心者からプロへ導く信頼のスクール

    短期間で習得可能!未経験から実践力を磨く充実のプログラム

    今なら無料相談でAmazonギフトカードがもらえる!

    サンプルプログラムの紹介と解説

    このサンプルプログラムは、指定されたフォルダ内にある全てのExcelブックからシートを選択し、それらを新しいExcelブックにコピーするためのものです。

    ここでは、基本的な操作から始め、Excel VBAでのファイル操作の基礎を学びます。

    Sub シートを統合する()
        Dim ws As Worksheet
        Dim wbNew As Workbook
        Set wbNew = Workbooks.Add
        
        Dim folderPath As String
        folderPath = "ここにフォルダのパスを入力" ' 指定フォルダのパス
        Dim fileName As String
        fileName = Dir(folderPath & "\*.xlsx", vbNormal)
        
        While fileName <> ""
            Dim wbOpen As Workbook
            Set wbOpen = Workbooks.Open(folderPath & "\" & fileName)
            
            For Each ws In wbOpen.Sheets
                ws.Copy After:=wbNew.Sheets(wbNew.Sheets.Count)
            Next ws
            
            wbOpen.Close False
            fileName = Dir()
        Wend
        
        wbNew.SaveAs folderPath & "\統合されたワークブック.xlsx"
        MsgBox "全てのシートが新しいワークブックにコピーされました。"
    End Sub

    解説:

    • Dimキーワードは、変数の宣言に使用されます。ここではws(ワークシート用)、wbNew(新しいワークブック用)、folderPath(フォルダパス用)、fileName(ファイル名用)という変数を宣言しています。
    • folderPathには、シートを統合したいExcelファイルが保存されているフォルダのパスを指定します。
    • Dir関数は、指定されたパスのファイル名を取得します。ここでは*.xlsxを使って、全てのExcelファイル(.xlsx形式)を指定しています。
    • Whileループを使って、フォルダ内の全てのファイルを順番に開き(Workbooks.Open)、その各シートを新しいワークブック(wbNew)にコピーします(ws.Copy)。
    • wbOpen.Close Falseは開いたファイルを保存せずに閉じるために使用されます。
    • 最後に、wbNew.SaveAsで新しいワークブックを指定したパスに保存し、MsgBoxで作業の完了を通知します。

    このプログラムを使用することで、煩雑な手作業を減らし、複数のファイルからのデータ統合作業を効率的に行うことができます。

    プログラムのカスタマイズや拡張により、さらに多様な作業を自動化することも可能です。

    まとめ

    指定されたフォルダ内の全Excelブックからシートを1つのブックに効率的にコピーする方法を解説しました。

    • 指定フォルダ内の全Excelブックからシートを選択し、新しいワークブックにコピーするためのVBAスクリプトを紹介。
    • スクリプトは、フォルダパス内の全.xlsxファイルを検索し、それらの全シートを新規ワークブックにコピーします。
    • コピーが完了した後、新しいワークブックは指定されたパスに保存され、ユーザーに完了メッセージが表示されます。

    Excel VBAは、日々の業務を効率化する強力なツールです。今回紹介したスクリプトは、煩雑なデータ統合作業を自動化し、大幅な時間節約につながります。

    このプログラムを起点にして、さらに学習を深め、自分の業務に合わせたカスタマイズを行うことをお勧めします。

    よかったらシェアしてね!
    • URLをコピーしました!
    • URLをコピーしました!
    目次