シートを複数コピーし、シート名をリストから取得する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
実行方法
Excelを開きます。
Alt + F11 キーを押して、VBAエディタを開きます。
Insert メニューから Module を選択して新しいモジュールを挿入します。
上記のコードを新しく作成したモジュールにコピーします。
VBAエディタを閉じ、Excelに戻ります。
Alt + F8 キーを押して、実行するマクロを選択し、実行ボタンをクリックします。
これで、シートAが10枚コピーされ、それぞれのコピーされたシートの名前がシートBのセルA1からA10までのリストから取得されて設定されます。
メモ
ChatGTPで作成。
この記事が気に入ったらサポートをしてみませんか?