【エクセルVBA】ワークシートを連続コピー・複製

当ページのリンクには広告が含まれています。

スポンサーリンク

エクセルVBAを使って、

ワークシートを連続コピー・複製する方法 を解説します

クリックしてジャンプ

イメージ動画(音声はありません)

サンプルダウンロード

説明に使用しているエクセルファイルです

下図のような表示が出た場合は、以下の手順でマクロを有効にできます

  1. 一度、エクセルを閉じる
  2. ダウンロードしたエクセルファイルを「右クリック」
  3. 「プロパティ」を選択
  4. 「全般」タブのセキュリティの「許可する」に
  5. 「適用」ボタンをクリック
  6. 「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」とか)が存在するとエラーとなります。

スポンサーリンク

クリックしてジャンプ