はじめに
ExcelVBAでひな形となるシートから翌月のシートを作成する処理は比較的多いのではないでしょうか。
多いけれど、月次でやる程度だしマクロ組むほどではなぁ……
そんな感じで月次で手動で対応している方も多いのではないと思います。
以下の処理をコピペして、ベースとなるシート名の部分を調整するだけで、翌月のシートを簡単に作れるマクロが使えます。
おまけでシートの重複チェックもつけておきましたので、Excelに同じ名前のシートが既にあると怒られる心配もありません。
コピペで使えるExcelVBA
Sub MakeNextMonthSheet()
Dim rename As String
'翌月(YYYYMM)を取得
rename = Format(DateSerial(Year(Now), Month(Now) + 1, 1), "YYYYMM")
'同名のシートが存在しないかチェックします
If Not isSheetExist(rename) Then
'ひな形というシートをベースに翌月(YYYYMM)のシートを作成します
Sheets("ひな形").Select
'最右にシートを追加します。
Sheets("ひな形").Copy After:=Sheets(Sheets.Count)
'最左にシートを追加する場合はこちら
'Sheets("ひな形").Copy Before:=Sheets(1)
'シートコピー後に名前を翌月に変更
ActiveSheet.Name = rename
Else
'同名のシートが既に存在した場合の処理
MsgBox "シート:" + rename + "は既に存在します"
End If
End Sub
Function isSheetExist(sheetname As String)
Dim ws As Worksheet
Dim result As Boolean
'すべてのシートに対して処理を実行
For Each ws In Worksheets
'引数で渡されたシート名と同じ名称のものが既に存在しないかチェック
If ws.Name = sheetname Then
result = True
Exit For
Else
result = False
End If
Next ws
isSheetExist = result
End Function