見出し画像

シートを複数コピーし、シート名をリストから取得するVBA

VBA

複製するシート シートA
複製する枚数 10枚
シート名のリストを記載してあるシート シートB
リストが書いてあるセルA1:A10
とする。

Sub CopyAndRenameSheets()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim sheetNamesRange As Range
    Dim cell As Range
    Dim i As Integer
    
    ' シートAの参照
    Set sourceSheet = ThisWorkbook.Sheets("SheetA")
    
    ' シートBの参照
    Set targetSheet = ThisWorkbook.Sheets("SheetB")
    
    ' シートBのセルA1からA10までのリストの範囲を取得
    Set sheetNamesRange = targetSheet.Range("A1:A10")
    
    ' シートAを10枚コピー
    For i = 1 To 10
        sourceSheet.Copy After:=Sheets(Sheets.Count)
        
        ' コピーしたシートの名前をシートBのリストから取得して設定
        Sheets(Sheets.Count).Name = sheetNamesRange.Cells(i, 1).Value
    Next i
End Sub


実行方法

  1. Excelを開きます。

  2. Alt + F11 キーを押して、VBAエディタを開きます。

  3. Insert メニューから Module を選択して新しいモジュールを挿入します。

  4. 上記のコードを新しく作成したモジュールにコピーします。

  5. VBAエディタを閉じ、Excelに戻ります。

  6. Alt + F8 キーを押して、実行するマクロを選択し、実行ボタンをクリックします。

これで、シートAが10枚コピーされ、それぞれのコピーされたシートの名前がシートBのセルA1からA10までのリストから取得されて設定されます。

メモ

ChatGTPで作成。

この記事が気に入ったらサポートをしてみませんか?