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

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

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

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

目次

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

このサンプルプログラムは、指定されたフォルダ内にある全ての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をコピーしました!
目次