Excel VBAでワークシートをコピーするには、シートオブジェクトのCopyメソッドを使用します。
構文 |
Object.Copy(Before, After)
|
引数 |
値 | 省略 | 説明 |
Before |
可 |
シートを指定します。
ここで指定したシートの前に該当シートがコピーされます。
|
After |
可 |
シートを指定します。
ここで指定したシートの後に該当シートがコピーされます。
|
※BeforeもAfterも省略した場合は、新規にブックを作成し、そのブックにシートをコピーします。
|
Copyメソッドはコピー元シートオブジェクトで使うことで、そのシートをコピーすることができます。引数を指定することで、指定のシートの前または後ろにコピー先を指定することができます。なお、引数(コピー先)を省略した場合は新しくブックを作成し、そのブックにシートをコピーします。
【例1】
Worksheets("Sheet1").Copy
上記例は「Sheet1」シートをコピーします。コピー先を引数で指定していないので、新規にブックを作成しそのブックにシートをコピーします。なお、Copyメソッドには名前を変更する機能はないので、コピーシートの名前を変更する場合は、コピー後にシートオブジェクトのNameプロパティで名前を変更します。
【例2】
Worksheets("Sheet2").Copy After:=Worksheets("Sheet3")
ActiveSheet.Name = "sample"
上記例は「Sheet2」シートを「Sheet3」の後ろにコピーし、その後、コピーしたシートを「sample」という名前に変更しています。Copyメソッドでシートをコピーした場合、コピー先シートが必ずアクティブになるので、ActiveSheetオブジェクトでコピーシートを特定することができます。
ブックの先頭(左端)にワークシートをコピーする
ブックの先頭(左端)にワークシートをコピーする場合は、Before引数に最初のシートを指定します。以下例では「Sheet1」シートをブックの先頭にコピーします。
【例3】
Public Sub sample()
Worksheets("Sheet1").Copy Before:=Worksheets(1)
End Sub
ブックの末尾(右端)にワークシートをコピーする
ブックの末尾(右端)にワークシートをコピーする場合は、After引数にブック末尾のシートを指定します。以下例では「Sheet1」シートをブックの末尾にコピーします。
【例4】
Public Sub sample2()
Worksheets("Sheet1").Copy After:=Worksheets(Worksheets.Count)
End Sub
※末尾のシートを指定するテクニックとして、Worksheets(Worksheets.Count)というオブジェクトを指定することで、ブックの末尾シートを指定することができます。