OfficeType

VBA~シートをコピーしよう~Excel

VBAでシートをコピーしたい時はWorksheets.Copyメソッドを使います。コピーしたシートにはシート名の右に(番号)がつきます。

一番左にコピーする場合

WorkSheets.Copyメソッドのパラメーターbeforeは指定したシートのすぐ左にシートをコピーします。一番左のシートはインデックス番号1なのでWorksheets(1)をパラメーターbeforeで指定すれば一番左にシートがコピーされます。

下のコードを実行するとSheet2が一番左にコピーします。

image-01

image-02

Sub test1()

Worksheets("Sheet2").Copy before:=Worksheets(1)

End Sub

一番右にコピーする場合

Worksheets.Copyメソッドのパラメーターafterは指定したシートのすぐ右にシートを追加します。一番右のシートはWorksheets.Countで指定できるのでWorksheets(Worksheets.Count)をパラメーターafterで指定すれば一番右にシートが追加されます。

下のコードを実行するとSheet1が一番右にコピーします。

image-03

image-04

Sub test2()
Worksheets("Sheet1").Copy after:=Worksheets(Worksheets.Count)
End Sub

指定したシートの左にコピーする場合

指定したシートの左にシートをコピーしたい時はパラメーターbeforeでシート名を指定します。

下の画像において下のコードを実行するとSheet5の左にSheet1がコピーします。

image-05

Sub test3()
Worksheets("Sheet1").Copy before:=Worksheets("Sheet5")
End Sub

image-06

指定したシートの右にコピーする場合

指定したシートの右にシートをコピーしたい時はパラメーターafterでシート名を指定します。

下の画像において下のコードを実行するとSheet5の右にSheet1がコピーします。

image-07

Sub test4()
Worksheets("Sheet1").Copy after:=Worksheets("Sheet5")
End Sub

image-08

複数のシートをコピーする場合

複数のシートをコピーする場合はWorksheets("シート名")のシート名をArray関数にまとめて格納することで選択できます。

下のコードを実行するとSheet1、Sheet2がSheet5の右にコピーされます。

image-09

Sub test5()
Worksheets(Array("Sheet1", "Sheet2")).Copy After:=Worksheets("Sheet5")
End Sub

image-10

別のブックにコピー

別のブックにシートをコピーしたい場合Workbookオブジェクトでブックを指定します。

下の画像において下のコードを実行するとBook1のSheet1がBook2のSheet3の右にコピーします。コピー先のブックに同名のシートがある場合はシート名の右に(番号)がつきます。

Sub test6()
Workbooks("Book1.xlsx").Worksheets("Sheet1").Copy After:=Workbooks("Book2.xlsx").Worksheets("Sheet3")
End Sub