シートをコピーして名前をつける
マクロ講座57回
今回紹介するマクロは、マクロ講座 48回の応用となります。
Excel 2013 マクロ講座 57回
原本のシートを複数コピーして名前をつける
売上表などは、原本(テンプレート)シートをコピーして使いまわすことが多いですが、
コピーしたシートに”令和5年1月”などのようにシート名をつけると手間が省けます。
コピーしたシートにシート名をつける方法
(サンプルファイルは、こちらから マクロ57回サンプルデータ)
原本コピーしたシートに名前
どんなことをするのかというと、最初は原本のテンプレートだけですが、マクロを実行すると指定枚数コピーされシートに名前をつけます。
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枚を引いています。うしろに"月"を加えています。
名前は文字列"令和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 & "月"
マクロを実行すると、始めに枚数を聞いてきます。
数値を入力してやり、OKをクリックすると、その枚数がコピーされます。今回は、テンプレートの前にシートを配置しています。
6月分までコピーして追加で4枚コピーしました。
ついでに、F2セルに何月と入れるようにしましょう。次のコードを追加しました。
Range("F2").Value = Worksheets.Count - 1
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