目次
ワークシートをコピー
今回は、 Excel のワークシートを同じワークブック内にコピーするマクロを作成してみました。
ワークシートのコピーは「Worksheets」オブジェクトの「Copy」メソッドで可能なようです。
マクロの一例
「Sheet1」をコピーして「Sheet3」の後ろに挿入する下記マクロを作成してみました。
「after:=Worksheets("Sheet3")」の記述で「Sheet3」の後ろにコピーするという指定になるようです。
Sub Sheet1をコピーしてSheet3の後ろに挿入()
Worksheets("Sheet1").Copy after:=Worksheets("Sheet3")
End Sub
上記マクロを下記画像のワークシートの状態で実行してみます。コピーした結果が分かりやすいように「Sheet1」の背景色を黄色に塗りつぶしてあります。
上記マクロを実行してみると、「Sheet1」が「Sheet3」の後ろにコピーされたようです。
「Sheet1」が二つになってしまうので「Sheet1 (2)」というワークシート名が自動的に付けられたようです。
before
「Sheet1」をコピーして「Sheet3」の前に挿入するマクロも作成してみました。
「before」パラメーターで指定したワークシートの前にコピーしたワークシートが配置されるようです。下記マクロを一例目のマクロに続けて実行してみます。
Sub Sheet1をコピーしてSheet3の前に挿入()
Worksheets("Sheet1").Copy before:=Worksheets("Sheet3")
End Sub
上記マクロを実行してみると、「Sheet1」が「Sheet3」 の前にコピーされたようです。三つ目の「Sheet1」なので「Sheet1 (3)」という名前になっています。
コピー後に名前変更
ワークシートをコピーした後に名前変更を行う場合は、アクティブなワークシートの名前を変更する事で可能なようです。下記マクロを続けて実行してみます。
Sub Sheet1をコピーしてSheet1の前に挿入してワークシート名をAに変更()
Worksheets("Sheet1").Copy before:=Worksheets("Sheet1")
Debug.Print ActiveSheet.Name
ActiveSheet.Name = "A"
End Sub
上記マクロを実行してみると、「Sheet1」の前にワークシート「A」が作成されました。
VBE(VisualBasicEditor)のイミディエイトウィンドウには以下の内容が出力されました。一旦「Sheet1 (4)」が作成されたようです。
Sheet1 (4)
複数シートをコピー
複数のワークシートをまとめてコピーする場合は、 Array 関数で配列を指定する事でコピー可能なようです。下記マクロを続けて実行してみます。
Sub Sheet1とSheet2をコピーしてSheet1の後ろに挿入()
Worksheets(Array("Sheet1", "Sheet2")).Copy after:=Worksheets("Sheet1")
Debug.Print ActiveSheet.Name
End Sub
マクロを実行してみると、「Sheet1」の後ろに「Sheet1 (4)」と「Sheet2 (2)」が作成されました。「Sheet1」「Sheet2」をまとめてコピー出来たようです。
VBE のイミディエイトウィンドウには以下の内容が出力されました。コピー後の一枚目のワークシートがアクティブになっているようです。
Sheet1 (4)
テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。