- 公開日:
エクセルで1ヶ月分の日付のシートを作成する方法
Excelで作業日報や経費報告などのフォーマットを作成した際、このシートを同じレイアウトで1ヶ月分(30枚・31枚など)増やすのは手間がかかります。
1ヶ月分のシート全部にレイアウトを1つ1つコピペすることを想像すると、途方に暮れるのではないでしょうか。
この記事では、Excelで1ヶ月分の日付のシートを一瞬で作成・コピペできるVBAをご紹介します。
エクセルで1ヶ月分の日付のシートを作成する方法
以下では、Excelで1ヶ月分の日付のシートを作成する方法について解説します。
開発タブの表示

Excelで1ヶ月分の日付のシートを作成するには、Visual Basicの機能がある開発タブを表示させる必要があります。
Excelで開発タブを表示させる方法については、以下の記事を参照してください。
1ヶ月の日付シートの作成方法
Excelで1ヶ月分の日付シートを作成する方法について解説します。

Sheet1に2023年11月1日の作業日報が記載されているフォーマットがあります。
ここでは、VBAを使って1ヶ月分(11/1~11/30)までのシートを一括で作成する方法をご紹介します。

①開発タブ、②Visual Basicの順に選択します。

「Microsoft Visual Basic for Applications」ダイアログボックスが表示されました。
①挿入タブ、②標準モジュールの順に選択します。

標準モジュールが表示されました。以下のコードをコピー&ペーストして貼り付けます。
Sub CreateWorkReport()
Dim First_Sht As Worksheet
Dim Months As Long
Dim Mydate As Date
Dim i As Long
Dim ShtName As String
'最初のシートを変数格納
Set First_Sht = ActiveSheet
'最初の日付
Mydate = First_Sht.Range("B4").Value
'一か月が何日間あるか計算
Months = DateAdd("m", 1, Mydate) - Mydate
'一か月の日数ループ
For i = 1 To Months
If i = 1 Then
'最初のシートは、シート名を変更するのみ
First_Sht.Name = Format(Mydate, "m月d日")
Else
'シート作成し、シート名を日付にする
First_Sht.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Format(Mydate, "m月d日")
ActiveSheet.Range("B4").Value = Mydate
End If
'列幅を自動調整
ActiveSheet.Columns("B:B").AutoFit
'日付を1日プラス
Mydate = DateAdd("d", 1, Mydate)
Next i
MsgBox "完了"
End Sub
このVBAコード「CreateWorkReport」は、Excel内で作業日報のシートを自動的に1ヶ月分作成するものです。
最初にアクティブなシート(Sheet1)のB4セルの日付を基に、その月の日数(11月なら30日)を計算します。その後、その月の日数だけ、各日付に対応するシートを作成します。
最初のSheet1ではシート名を日付(11月1日)に変更し、2日目(11月2日)以降のシートでは新たにシートを追加し、シート名とB4セルの日付を次々と設定します。
さらに、B列の列幅を自動調整して日付が「#######」として表示されるのを防ぎます。
これにより、日付シートの名前および内容が正しく表示されるようになります。全てのシートが作成された後、メッセージボックスで「完了」と表示されることで、シートの生成が終了したことがユーザーに通知されます。

①ファイルタブ、②「(ファイル名).xlsxの上書き保存」の順に選択します。

「Microsoft Excel」ダイアログボックスが表示されました。
いいえボタンを押します。

「名前を付けて保存」ダイアログボックスが表示されました。①保存したいフォルダー(例: デスクトップ)を選択します。
②ファイル名(例: CreateWorkReport)を入力し、③ファイルの種類のプルダウンから「Excel マクロ有効ブック」を選択し、④保存ボタンを押します。

①開発タブ、②マクロの順に選択します。

「マクロ」ダイアログボックスが表示されました。
①マクロ名(CreateWorkReport)を選択し、②実行ボタンを押します。

11月1日から11月30日までのシートが瞬時に表示されました。
シート(11月30日)の日付(B4セル)を確認すると「2023/11/30」になっており、シート名と連動していることがわかりました。

「Sheet1」のシートも「11月1日」に変更されていました。
「11月1日」シートを選択すると、日付も「2023/11/1」になっていたことが確認できました。