【Excel VBA】他のExcel(エクセル)のシートをコピーする

Excel VBA 他Excelエクセル(ブック)のシートをコピーするマクロ

社員の日報をまとめる、部署ごとの報告をまとめるなど、他のExcelのシートを一つのExcelにまとめたいことはあると思います。

本記事では、他のExcel(エクセル)のシートを一つのExcelにまとめるマクロを紹介します。

VBAでマクロを作るための準備

Module1を追加する

標準モジュールにModule1を追加します。

【VBAProjectを右クリック】→ 【挿入】 → 【標準モジュール】をクリックします。

そもそもこの画面なに?という方は、以下の記事でVBAを書き始める準備の方法をまとめているのでご覧ください。

Excel VBA マクロの作り方【Excel VBA】Excelマクロの始め方 ~簡単なサンプル付き~

Excel VBA: 他Excel(エクセル)のシートをコピーするマクロ

1. VBAのソースコードを書く

Module1を追加したら、以下のソースコードをコピぺしましょう。処理内容はソースのコメントに書いてあります。

たけのこ
右上の”copy”をクリックしたらソースをコピーできますよ!

copy

Sub OtherBookSheetsCopy()

    Dim fromWorkBook As Workbook
    Dim folderPath
    Dim fileName As String
    
    ' 画面の更新が見えないようにする
    Application.ScreenUpdating = False
    
    ' フォルダパスを変数に設定する
    folderPath = thisWorkBook.Path
    
    ' コピーするファイルのファイル名を取得する
    fileName = Dir(folderPath & "\*.xlsx")
    
    ' ファイル名が取得できた場合にループする
    Do While fileName <> ""
    
        ' コピーするファイルを開く
        Set fromWorkBook = Workbooks.Open(folderPath & "\" & fileName)
        
        ' コピーするファイルの1シート目を、このファイルの1シート目にコピーする
        fromWorkBook.Worksheets(1).Copy before:=thisWorkBook.Worksheets(1)
        
        ' コピーするファイルを閉じる
        fromWorkBook.Close
        
        ' 次にコピーするファイルのファイル名を取得する
        fileName = Dir()
        
    Loop
    
    ' 画面の更新が見えるようにする
    Application.ScreenUpdating = True

End Sub

本マクロのポイント
  • マクロ実行ファイルと、他ブックは同じフォルダに保存するようにしてあります。
  • Dir関数は、引数に一致する最初のファイル名を返します。フォルダー内のすべてのファイルに対して反復処理を行うには、空の文字列を指定します。(参考:Dir関数)
  • 1シート目をコピーする設定です。ソースコードを変更すればシート名を指定することも可能です。Worksheets(“シート名”)のシート名を変更してください。

Module1にソースコードをコピーしたら、以下のようになります。

2. 準備

マクロを保存してあるファイルと同じフォルダに、コピーしたいファイルを保存します

なお、本記事ではシート名はファイル名と同じにしてあります。

3. マクロを実行する

キーボードの【F5】を押す、または画面上部の【▶】を押して、マクロを実行します。

他ブックのシートが追加されていることを確認します。

ここまで確認出来たら完了です!

 

↓ 参考にしている書籍です!