【エクセルVBA】ワークシートを連続コピー・複製
当ページのリンクには広告が含まれています。
エクセルVBAを使って、
ワークシートを連続コピー・複製する方法 を解説します
クリックしてジャンプ
イメージ動画(音声はありません)
サンプルダウンロード
説明に使用しているエクセルファイルです
下図のような表示が出た場合は、以下の手順でマクロを有効にできます。
- 一度、エクセルを閉じる
- ダウンロードしたエクセルファイルを「右クリック」
- 「プロパティ」を選択
- 「全般」タブのセキュリティの「許可する」に ✓
- 「適用」ボタンをクリック
- 「OK」ボタンをクリック
VBAコード
Sub シート連続コピー()
'コピーするシート名
Dim シート名 As String
シート名 = ThisWorkbook.Worksheets("複製ボタン").Range("F10").Value
'コピーするシートがあるかチェック
Dim ws As Worksheet
Dim flag As Boolean
For Each ws In Worksheets
If ws.Name = シート名 Then flag = True
Next ws
'コピーするシートが存在すればコピー実行
If flag = True Then
'繰り返し用
Dim i As Long
'コピーする枚数
Dim j As Long
j = Range("F11").Value
For i = 1 To j
'新しいエクセルファイルの最後にシートをコピーする
ThisWorkbook.Worksheets(シート名).Copy _
After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
'シート名は連番をセット
ActiveSheet.Name = i
Next
'コピーするシートが無ければメッセージ
Else
MsgBox シート名 & " シートがありません"
End If
End Sub
説明
「複製ボタン」シート の 「F10」セル で コピー(複製)する シートを指定
「複製ボタン」シート の 「F11」セル で コピー(複製)する 枚数を指定
指定したシートが無い場合はメッセージを表示
注意
上記コードは、連番のシート名でコピー(複製)されますが、コピー時にすでに同じシート名(「1」とか「2」とか)が存在するとエラーとなります。