Excel VBAを使うと、現在のシートを簡単にコピーして新しいシートを作成できます。ここでは、現在アクティブなシートを複製する方法について解説します。
1. 現在のシートをコピーする基本コード
VBAで現在のシートをコピーするには、ActiveSheet.Copy
メソッドを使用します。
以下は、アクティブなシートを最後に複製するサンプルコードです。
Sub CopyActiveSheet()
'現在のアクティブシートをコピー
ActiveSheet.Copy After:=Sheets(Sheets.Count)
End Sub
ポイント
After:=Sheets(Sheets.Count)
は、「最後のシートの後ろにコピーを作成」という意味です。- 新しくコピーされたシートには、「元のシート名 + (2)」といったように自動で連番が付きます。
2. 指定した位置にコピーを作成する
シートを複製する位置を指定することもできます。
たとえば、現在のシートの直後にコピーしたい場合は以下のように記述します。
Sub CopySheetNext()
'現在のシートの後ろにコピー
ActiveSheet.Copy After:=ActiveSheet
End Sub
また、一番前にコピーを作成したい場合は、Before:=Sheets(1)
を使います。
Sub CopySheetToFirst()
'一番前にコピー
ActiveSheet.Copy Before:=Sheets(1)
End Sub
3. シートをコピーする際の注意点
- シートが保護されている場合はエラーになることがあります。コピー前に
Unprotect
メソッドを使用する必要があります。 - ブックにシートが1枚しかない場合でもコピーは可能ですが、削除操作と混同しないように注意しましょう。
- コピー時に新しいシート名を設定する場合は、
Name
プロパティを使ってリネームできます。
Sub CopyAndRenameSheet()
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'コピー後、最後のシートをリネーム
Sheets(Sheets.Count).Name = "コピーシート"
End Sub
4. まとめ
ActiveSheet.Copy
を使うことで、現在のシートを簡単に複製できる。After
やBefore
を使えば、コピーする位置を自由に指定可能。- コピー後のシート名は
Name
プロパティで変更できる。 - シート保護や既存の名前との重複には注意が必要。
コメント