【VBA】現在のシートをコピーして新しいシートを作成

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を使うことで、現在のシートを簡単に複製できる。
  • AfterBeforeを使えば、コピーする位置を自由に指定可能。
  • コピー後のシート名はNameプロパティで変更できる。
  • シート保護や既存の名前との重複には注意が必要。

コメント

タイトルとURLをコピーしました