原本シートをコピーして名前をつけるマクロ Excel 2013 マクロ講座

シートをコピーして名前をつける

マクロ講座57回 
シートをコピーして名前をつける

今回紹介するマクロは、マクロ講座 48回の応用となります。

Excel 2013 マクロ講座 57回

原本のシートを複数コピーして名前をつける

売上表などは、原本(テンプレート)シートをコピーして使いまわすことが多いですが、 コピーしたシートに”令和5年1月”などのようにシート名をつけると手間が省けます。
コピーしたシートにシート名をつける方法
(サンプルファイルは、こちらから マクロ57回サンプルデータ

原本コピーしたシートに名前

どんなことをするのかというと、最初は原本のテンプレートだけですが、マクロを実行すると指定枚数コピーされシートに名前をつけます。
原本シートをコピーして名前をつけるマクロ1
48回の枚数を指定してシートをコピーするマクロのコードは、次のようなコードでした。
Sub 枚数指定コピー()
    Dim i As Integer
    Dim cnt As Integer
    
    cnt = Application.InputBox(Prompt:="枚数を入力", Title:="枚数指定", Type:=1)
    For i = 1 To cnt
        Worksheets("テンプレート").Copy After:=Worksheets(i)
        ActiveSheet.Name = i
    Next i
End Sub
    
このコードのActiveSheet.Name = iをシート名の書式で入れるように書き換えます。
'ActiveSheet.Name = i
' ↓このように変更
ActiveSheet.Name = "令和5年" & Worksheets.Count - 1 & "月"
このブックはテンプレートが1枚だけあるブックです。ですからシートの数は必要枚数よりも一つ多くなります。
名前は文字列"令和5年"にWorksheets.Countでワークシートの枚数を求めて、テンプレートの1枚を引いています。うしろに"月"を加えています。
Sub 枚数コピーして名前もつける()
    Dim i As Integer
    Dim cnt As Integer
    
    cnt = Application.InputBox(Prompt:="枚数を入力", Title:="枚数指定", Type:=1)
    For i = 1 To cnt
    Worksheets("テンプレート").Copy before:=Worksheets("テンプレート")
    ActiveSheet.Name = "令和5年" & Worksheets.Count - 1 & "月"
    Next i
End Sub
    

Worksheets.Count 使わずに変数i を使ってもOK です。

    ActiveSheet.Name = "令和5年" & i & "月"
マクロを実行すると、始めに枚数を聞いてきます。
原本シートをコピーして名前をつけるマクロ3
数値を入力してやり、OKをクリックすると、その枚数がコピーされます。今回は、テンプレートの前にシートを配置しています。
原本シートをコピーして名前をつけるマクロ4
6月分までコピーして追加で4枚コピーしました。
原本シートをコピーして名前をつけるマクロ5

ついでに、F2セルに何月と入れるようにしましょう。次のコードを追加しました。
Range("F2").Value = Worksheets.Count - 1
Sub 枚数コピーして名前もつける()
    Dim i As Integer
    Dim cnt As Integer
    cnt = Application.InputBox(Prompt:="枚数を入力", Title:="枚数指定", Type:=1)
    For i = 1 To cnt
    Worksheets("テンプレート").Copy before:=Worksheets("テンプレート")
    ActiveSheet.Name = "令和5年" & Worksheets.Count - 1 & "月"
    Range("F2").Value = Worksheets.Count - 1
    Next i
End Sub
    
NAMAマクロ6