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でシートを複数の別ブックにコピーする方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す