VBA~シートをコピーしよう~Excel
VBAでシートをコピーしたい時はWorksheets.Copyメソッドを使います。コピーしたシートにはシート名の右に(番号)がつきます。
一番左にコピーする場合
WorkSheets.Copyメソッドのパラメーターbeforeは指定したシートのすぐ左にシートをコピーします。一番左のシートはインデックス番号1なのでWorksheets(1)をパラメーターbeforeで指定すれば一番左にシートがコピーされます。
下のコードを実行するとSheet2が一番左にコピーします。
Sub test1() Worksheets("Sheet2").Copy before:=Worksheets(1) End Sub
一番右にコピーする場合
Worksheets.Copyメソッドのパラメーターafterは指定したシートのすぐ右にシートを追加します。一番右のシートはWorksheets.Countで指定できるのでWorksheets(Worksheets.Count)をパラメーターafterで指定すれば一番右にシートが追加されます。
下のコードを実行するとSheet1が一番右にコピーします。
Sub test2() Worksheets("Sheet1").Copy after:=Worksheets(Worksheets.Count) End Sub
指定したシートの左にコピーする場合
指定したシートの左にシートをコピーしたい時はパラメーターbeforeでシート名を指定します。
下の画像において下のコードを実行するとSheet5の左にSheet1がコピーします。
Sub test3() Worksheets("Sheet1").Copy before:=Worksheets("Sheet5") End Sub
指定したシートの右にコピーする場合
指定したシートの右にシートをコピーしたい時はパラメーターafterでシート名を指定します。
下の画像において下のコードを実行するとSheet5の右にSheet1がコピーします。
Sub test4() Worksheets("Sheet1").Copy after:=Worksheets("Sheet5") End Sub
複数のシートをコピーする場合
複数のシートをコピーする場合はWorksheets("シート名")のシート名をArray関数にまとめて格納することで選択できます。
下のコードを実行するとSheet1、Sheet2がSheet5の右にコピーされます。
Sub test5() Worksheets(Array("Sheet1", "Sheet2")).Copy After:=Worksheets("Sheet5") End Sub
別のブックにコピー
別のブックにシートをコピーしたい場合Workbookオブジェクトでブックを指定します。
下の画像において下のコードを実行するとBook1のSheet1がBook2のSheet3の右にコピーします。コピー先のブックに同名のシートがある場合はシート名の右に(番号)がつきます。
Sub test6() Workbooks("Book1.xlsx").Worksheets("Sheet1").Copy After:=Workbooks("Book2.xlsx").Worksheets("Sheet3") End Sub