VBAで自動化 VBA一覧 シート追加 セル・シート・ブック操作

【VBA】シートをコピーして追加する方法

Excel VBA を使用すると、既存のシートをコピーして新しいシートとして追加する操作を簡単に自動化できます。この機能を利用することで、テンプレートを基にしたシートの作成や特定の内容を持つシートの複製が効率的に行えます。

この記事では、シートをコピーして追加する基本的な方法から活用例を解説します。

 

シートをコピーする基本操作

既存のシートをコピーして新しいシートを作成するには、Worksheet.Copy メソッドを使用します。【VBA】シートのコピーを自動化(AddメソッドとCopyメソッド)

基本的なシートのコピー

シート Sheet1 をコピーし、ブック内に新しいシートとして追加します。

Sub CopySheet()

Worksheets("Sheet1").Copy After:=Worksheets(Worksheets.Count)

End Sub

解説

  • Worksheets("Sheet1") をコピー元として指定。
  • After:=Worksheets(Worksheets.Count) を指定して、末尾に新しいシートを挿入します。

シートをコピーして名前を設定

コピー後のシートに名前を設定することで、管理がしやすくなります。

【コピー後のシートに名前を設定】

Sub CopySheetAndRename()

Dim newSheet As Worksheet

' シートをコピーして新しいシートとして追加
Worksheets("Sheet1").Copy After:=Worksheets(Worksheets.Count)
Set newSheet = Worksheets(Worksheets.Count) ' コピーされたシートを取得

' 新しいシートに名前を設定
newSheet.Name = "コピーされたシート"

End Sub

注意点

  • シート名が既存の名前と重複しないように注意してください。重複するとエラーが発生します。

複数のシートを一括でコピーする

複数のシートを一括でコピーする場合、Array を使用して指定します。【VBA】配列(array)の1次元配列・2次元配列

【複数のシートを一括コピー】

Sub CopyMultipleSheets()

Dim sheetNames As Variant
sheetNames = Array("Sheet1", "Sheet2", "Sheet3") ' コピーするシート名

Worksheets(sheetNames).Copy After:=Worksheets(Worksheets.Count)

End Sub

解説

  • Array を使用してコピーするシート名を指定します。
  • コピーされたシートは選択状態になり、順番に新しいシートとして追加されます。

新しいブックにシートをコピー

コピー元シートを新しいブックに追加する方法です。

【新しいブックにシートをコピー】

Sub CopySheetToNewWorkbook()

Dim newWorkbook As Workbook

' シートを新しいブックにコピー
Worksheets("Sheet1").Copy
Set newWorkbook = ActiveWorkbook ' 新しいブックを取得

MsgBox "新しいブックにシートがコピーされました。"

End Sub

解説

  • Worksheets("Sheet1").Copy を実行すると、新しいブックが自動的に作成され、シートがコピーされます。
  • ActiveWorkbook で新しく作成されたブックを取得します。

テンプレートシートをコピー

テンプレートとして設定されたシートを基に、複数の新しいシートを作成する方法です。

【テンプレートシートを基に複数シートを追加】

Sub CopyTemplateSheet()

Dim i As Integer
Dim newSheet As Worksheet

For i = 1 To 3 ' 3枚のシートを作成

Worksheets("テンプレート").Copy After:=Worksheets(Worksheets.Count)
Set newSheet = Worksheets(Worksheets.Count) ' コピーされたシートを取得
newSheet.Name = "テンプレート_" & i ' 名前を設定

Next i

End Sub

 

コピーしたシートの内容を編集する

コピー後のシートに特定の値を入力したり、フォーマットを変更することも可能です。

【コピー後に値を設定】

Sub CopySheetAndEdit()

Dim newSheet As Worksheet

' シートをコピー
Worksheets("Sheet1").Copy After:=Worksheets(Worksheets.Count)
Set newSheet = Worksheets(Worksheets.Count) ' コピーされたシートを取得

' コピーされたシートに値を設定
newSheet.Range("A1").Value = "これはコピーされたシートです"

End Sub

注意点とベストプラクティス

  1. シート名の重複に注意
    コピー後に名前を設定する場合、重複しないように確認する必要があります。
  2. テンプレートシートの活用
    定型フォーマットを持つシートをテンプレートとして設定すると、効率的な管理が可能です。
  3. エラーハンドリングの実装
    存在しないシートをコピーしようとするとエラーが発生します。エラーハンドリングを組み込むことで、スムーズな処理が可能になります。【VBA】エラーを無視して終了する方法:エラーハンドリング
  4. 新しいブックへのコピー
    他の作業ブックと連携する場合は、新しいブックにコピーする方法を活用してください。

まとめ

Excel VBA を使用してシートをコピーして追加する方法を習得すれば、テンプレートや定型フォーマットを基にした作業が効率化します。以下のポイントを押さえておきましょう:

  1. 基本操作: Worksheet.Copy を使用して簡単にシートを複製。
  2. 応用例: 名前の設定、複数のシートコピー、新しいブックへのコピーなど。
  3. エラーチェック: シート名の存在確認やエラーハンドリングを適切に実装。

-VBAで自動化, VBA一覧, シート追加, セル・シート・ブック操作