【Excel VBA】シートを別ブックにコピーする方法!複数シート対応可!

VBAでシートを別ブックにコピーしたいときはないでしょうか。

けど、そんな中で悩むことは、

・VBAでシートを別ブックにコピーしたいが方法がよくわからない
・VBAのシートを複数の別ブックにコピーしたいが方法がわからない

ですよね。

今回はそんなお悩みを解決する

・VBAでシートを別ブックにコピーする方法
・VBAでシートを複数の別ブックにコピーする方法

についてまとめます!

VBAでシートを別ブックにコピーするイメージ

VBAでシートを別ブックにコピーするイメージについて説明をします。

以下のようにコピー元となるひな形シートを用意します。

まずは、元シートを同一ブック内で複数コピーし、シートをコピーする基本を確認します。

続いて、別ブックへ元シートをコピーしていきます。

元シートから別シートへ複数コピーされました。

元シートのひな形シートが2種類以上ある場合も同時に別シートへコピーしていきます。

最後に複数の別ブックへ元シートを複数コピーしていきます。

月次や年次ごとの資料を作成する時に便利ですね。

それでは早速試してみましょう。

VBAでシートを複数コピーする方法

VBAでシートを複数コピーする基本の方法について説明をします。

サンプルデータを準備する

サンプルデータを元シートとなるひな形シートへ入力しましょう。

タカヒロ
タカヒロ
シートの内容はどのような内容でも構いません。

VBAコード

サンプルのVBAコードは以下の通りです。

Sub シートを複数コピーする()

    Dim i As Integer
    
    '件数分コピー処理を繰り返します。
    For i = 1 To 5
        '末尾のシートの後にシートを追加します。
        Sheets("ひな形").Copy After:=Sheets(Sheets.Count)
    Next i

End Sub

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

VBAを実行する

VBAを実行してみましょう。

同一ブック内にひな形シートが5こ複製コピーされましたね。

VBAの説明

VBAについて説明をします。

件数分コピー処理を繰り返します。

For i = 1 To 5

Sheetsコレクションの”ひな形”シートをコピーし、最後のシート(Sheets.Count)の後ろにシートを挿入します

Sheets("ひな形").Copy After:=Sheets(Sheets.Count)

アクティブシートの後ろにシートを挿入したい場合は以下のようにActiveSheetを指定してください。

VBAでシートを別ブックへ複数コピーする方法

Sheets("ひな形").Copy After:=ActiveSheet

VBAでシートを別ブックへ複数コピーする基本の方法について説明をします。

サンプルデータを準備する

元シートは前回のものを使用します。

コピー先のブックを新規作成します。

VBAコード

サンプルのVBAコードは以下の通りです。

Sub シートを別ブックへ複数コピーする()

    Dim objWorkbook As Workbook
    Dim i As Integer
    
    'コピー先のエクセルを開きます。
    Set objWorkbook = Workbooks.Open("F:\test\別ブック.xlsx")
    
    For i = 1 To 5
        Workbooks("元シート.xlsm").Sheets("ひな形").Copy After:=objWorkbook.Sheets(objWorkbook.Sheets.Count)
    Next i

    '別ブックを保存します。
    'objWorkbook.Save
    
    '別ブックを閉じます。
    'objWorkbook.Close
        
    'オブジェクトを解放します。
    Set objWorkbook = Nothing

End Sub

VBAを設定する

VBAを設定していきます。

コピー先のエクセルのパスを指定します。

Set objWorkbook = Workbooks.Open("F:\test\別ブック.xlsx")

元シートのあるブック名と元シート名を指定します。

Workbooks("元シート.xlsm").Sheets("ひな形").Copy

VBAを実行する

VBAを実行してみましょう。

別ブックにひな形シートが5こ複製コピーされましたね。

VBAの説明

VBAについて説明をします。

コピー先のエクセルを開き、オブジェクトにセットします。

Set objWorkbook = Workbooks.Open("F:\test\別ブック.xlsx")

件数分コピー処理を繰り返します。

For i = 1 To 5

Sheetsコレクションの”ひな形”シートを別ブックへコピーし、別ブックの方の最後のシート(Sheets.Count)の後ろにシートを挿入します

Workbooks("元シート.xlsm").Sheets("ひな形").Copy After:=objWorkbook.Sheets(objWorkbook.Sheets.Count)

別ブックを保存したい場合はコメントアウトを外して有効にしてください。

objWorkbook.Save

別ブックを閉じたい場合はコメントアウトを外して有効にしてください。

objWorkbook.Close

VBAで複数シートを別ブックへコピーする方法

VBAで複数シートを別ブックへコピーする方法について説明をします。

サンプルデータを準備する

元シートは前回のものにもう一つ追加します。

コピー先のブックを新規作成します。

VBAコード

サンプルのVBAコードは以下の通りです。

Sub 複数のシートを別ブックへコピーする()

    Dim objWorkbook As Workbook
    Dim i As Integer
    
    'コピー先のエクセルを開きます。
    Set objWorkbook = Workbooks.Open("F:\test\別ブック.xlsx")
    
    Workbooks("元シート.xlsm").Sheets(Array("ひな形", "ひな形2")).Copy After:=objWorkbook.Sheets(objWorkbook.Sheets.Count)

    '別ブックを保存します。
    'objWorkbook.Save
    
    '別ブックを閉じます。
    'objWorkbook.Close
        
    'オブジェクトを解放します。
    Set objWorkbook = Nothing

End Sub

VBAを設定する

VBAを設定していきます。

コピー先のエクセルのパスを指定します。

Set objWorkbook = Workbooks.Open("F:\test\別ブック.xlsx")

元シートのあるブック名と元シート名を指定します。今回は複数シートありますので、配列でシートを指定しています。

Workbooks("元シート.xlsm").Sheets(Array("ひな形", "ひな形2"))

VBAを実行する

VBAを実行してみましょう。

別ブックに2つのひな形シートがコピーされましたね。

VBAでシートを複数の別ブックへコピーする方法

VBAでシートを複数の別ブックへコピーする方法について説明をします。

サンプルデータを準備する

元シートは一つのものを使います。

コピー先のブックを複数新規作成します。

VBAコード

サンプルのVBAコードは以下の通りです。

Sub シートを複数の別ブックへ複数コピーする()

    Dim objWorkbook As Workbook
    Dim i As Integer
    Dim arrBookList As Variant
    Dim strBookList As Variant
    
    '別ブック格納先パスを入力します。
    arrBookList = Array("F:\test\別ブック.xlsx", "F:\test\別ブック1.xlsx", "F:\test\別ブック2.xlsx")
    
    For Each strBookList In arrBookList

        'コピー先のエクセルを開きます。
        Set objWorkbook = Workbooks.Open(strBookList)
    
        '件数分コピー処理を繰り返します。
        For i = 1 To 5
            
            '末尾のシートの後にシートを追加します。
            Workbooks("元シート.xlsm").Sheets("ひな形").Copy After:=objWorkbook.Sheets(objWorkbook.Sheets.Count)
        Next i
        
        '別ブックを保存します。
        'objWorkbook.Save
        
        '別ブックを閉じます。
        'objWorkbook.Close
    
    Next
    
    'オブジェクトを解放します。
    Set objWorkbook = Nothing
    
End Sub

VBAを設定する

VBAを設定していきます。

コピー先のエクセルのパスを指定します。

arrBookList = Array("F:\test\別ブック.xlsx", "F:\test\別ブック1.xlsx", "F:\test\別ブック2.xlsx")

タカヒロ
タカヒロ
さらに追加する場合は「,」で区切って追加をしてください。

元シートのあるブック名と元シート名を指定します。

Workbooks("元シート.xlsm").Sheets("ひな形").Copy After:=objWorkbook.Sheets(objWorkbook.Sheets.Count)

VBAを実行する

VBAを実行してみましょう。

複数の別ブックにシートがコピーされましたね。

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・VBAでシートを別ブックにコピーする方法
・VBAでシートを複数の別ブックにコピーする方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です