【VBA】シートのコピー方法まとめ【コピーして名前変更、末尾や先頭、新規ブック、複数のコピーをする】

Excel VBAで、シートを特定シートや、先頭、末尾にコピーしたい場合は、「before:=」や「after:=」を使って、シートを指定することでできます。新規ブックにコピーしたい場合は、「.Copy」で、複数シートをコピーの場合は、「配列」を使うという感じです。シートをコピーする方法をマスターしていきましょう。
はじめに
この記事では、シートをコピーする方法について、ご紹介します。
シートを、特定シートの前後や、先頭、末尾にコピーするには、「before:=」と「after:=」を使って、コピー先のシートを指定することでできます。
新規ブックにコピーする場合は、「.Copy」のみを入力することでできます。
複数シートをコピーしたい場合は、「配列」を使います。
シートのコピー方法について、マスターしていきましょう。
では、シートをコピーする方法について、解説していきます。
この記事を読むメリット
- シートを自由自在にコピーすることができるようになります。
目次
シートをコピーする
シートをコピーしてみます。
次の箇所に、シートをコピーしてみます。
- アクティブシートの左右
- 特定シートの左右
- 先頭と末尾
- 新規ブック
では、それぞれやってみます。
アクティブシートの左側にコピー
アクティブシートの左側にコピーしてみます。
左側にコピーしたいので、「before:=」を使います。
Sub TEST1()
'アクティブシートの左側にコピー
ActiveSheet.Copy before:=ActiveSheet
End Sub
元のシートです。
元シート

実行すると、アクティブシートの左側にコピーできます。
アクティブシートの左側にコピーできた

アクティブシートの左側にコピーできました。
アクティブシートの右側にコピー
アクティブシートの右側にコピーしてみます。
右側にコピーしたいので、「after:=」を使います。
Sub TEST2()
'アクティブシートの右側にコピー
ActiveSheet.Copy after:=ActiveSheet
End Sub
元のシートです。
元シート

実行すると、アクティブシートの右側にコピーできます。
アクティブシートの右側にコピーできた

アクティブシートの右側にコピーできました。
特定シートの左にコピー
特定シートの左にコピーしてみます。
「befere:=」の後にシートを指定します。
Sub TEST3()
'Bのシートの左側にコピー
ActiveSheet.Copy before:=Sheets("B")
End Sub
元のシートです。
元シート

「B」のシートの左側にコピーできます。
Bのシートの左側にコピーできた

「B」のシートの左側にコピーしました。
特定シートの右にコピー
特定シートの右にコピーしてみます。
「after:=」のところに、シートを指定します。
Sub TEST4()
'Bのシートの右側にコピー
ActiveSheet.Copy after:=Sheets("B")
End Sub
元のシートです。
元シート

「B」のシートの右側にコピーできます。
Bのシートの右側にコピーできた

「B」のシートの右側にコピーできました。
先頭にコピー
先頭にコピーしてみます。
「before:=Sheets(1)」というように引数を入力します。
Sub TEST5()
'先頭にコピー
ActiveSheet.Copy before:=Sheets(1)
End Sub
元のシートです。
元シート

実行すると、シートの先頭にコピーできます。
シートの先頭にコピーできた

シートの先頭にコピーできました。
末尾にコピー
末尾にコピーしてみます。
「after:=Sheets(Sheets.Count)」というように、引数を入力します。
Sub TEST6()
'末尾にコピー
ActiveSheet.Copy after:=Sheets(Sheets.Count)
End Sub
元のシートです。
元シート

実行すると、シートの末尾にコピーできます。
シートの末尾にコピーできた

シートの末尾にコピーできました。
新規ブックにコピー
新規ブックにコピーしてみます。
引数を入力しないで、「.Copy」のみを入力します。
Sub TEST7()
'新規ブックにコピー
ActiveSheet.Copy
End Sub
実行すると、新規ブックにコピーできます。
新規ブックにコピーできた

新規ブックにコピーできました。
複数シートをコピー
複数シートをコピーするには、「配列」を使います。
配列を使う
配列を使って、複数シートをコピーしてみます。
Sub TEST8()
'複数シートをコピー
Sheets(Array("A", "B")).Copy after:=Sheets(Sheets.Count)
End Sub
元のシートです。
元シート

実行すると、複数シートをコピーできます。
複数シートをコピーできた

複数シートをコピーできました。
複数シートを新規ブックにコピー
複数シートを新規ブックにコピーしてみます。
新規ブックにコピーの場合は、引数を省略します。
Sub TEST9()
'複数シートを新規ブックにコピー
Sheets(Array("A", "B")).Copy
End Sub
実行すると、複数シートを、新規ブックにコピーできます。
複数シートを、新規ブックにコピーできた

複数シートを、新規ブックにコピーできました。
コピーして名前を変更
コピーして名前を変更してみます。
コピーしてアクティブシートの名前を変更する
コピーすると、コピーしたシートがアクティブになります。
なので、コピーした後に、アクティブシートの名前を変更すると、コピー先のシート名を変更できます。
Sub TEST10() 'シートをコピー Sheets("B").Copy after:=Sheets(Sheets.Count) ActiveSheet.Name = "ABC" '新規シートの名前を変更 End Sub
元のシートです。
元シート

実行すると、Bのシートをコピーして、アクティブシートの名前を変更できます。
シートコピーして名前を変更できた

Bのシートをコピーして、アクティブシートの名前を変更できました。
同じシートを複数作成する
同じシートを複数作成してみます。
シートコピーを繰り返す
シートコピーを繰り返すことで、同じシートを複数作成できます。
Sub TEST11() For i = 1 To 3 'シートコピー Sheets("B").Copy after:=Sheets(Sheets.Count) ActiveSheet.Name = i '新規シートの名前を変更 Next End Sub
元のシートです。
元シート

実行すると、シートコピーを繰り返して、複数シートにコピーできます。
複数シートにコピーできた

シートコピーを繰り返して、複数シートにコピーできました。
おわりに
この記事では、シートをコピーする方法について、ご紹介しました。
シートを、特定シートの前後や、先頭、末尾にコピーするには、「before:=」と「after:=」を使って、コピー先のシートを指定することでできます。
新規ブックにコピーする場合は、「.Copy」のみを入力することでできます。
複数シートをコピーしたい場合は、「配列」を使います。
シートのコピー方法について、マスターしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。
関連する記事から探す