• 公開日:

エクセルで1ヶ月分の日付のシートを作成する方法

Excelで作業日報や経費報告などのフォーマットを作成した際、このシートを同じレイアウトで1ヶ月分(30枚・31枚など)増やすのは手間がかかります。

1ヶ月分のシート全部にレイアウトを1つ1つコピペすることを想像すると、途方に暮れるのではないでしょうか。

この記事では、Excelで1ヶ月分の日付のシートを一瞬で作成・コピペできるVBAをご紹介します。

エクセルで1ヶ月分の日付のシートを作成する方法

以下では、Excelで1ヶ月分の日付のシートを作成する方法について解説します。

開発タブの表示

開発タブの表示

Excelで1ヶ月分の日付のシートを作成するには、Visual Basicの機能がある開発タブを表示させる必要があります。

Excelで開発タブを表示させる方法については、以下の記事を参照してください。

エクセルの開発タブを表示する方法

1ヶ月の日付シートの作成方法

Excelで1ヶ月分の日付シートを作成する方法について解説します。

シートの1枚目

Sheet1に2023年11月1日の作業日報が記載されているフォーマットがあります。

ここでは、VBAを使って1ヶ月分(11/1~11/30)までのシートを一括で作成する方法をご紹介します。

Visual Basicを選択する

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

標準モジュールを選択する

「Microsoft Visual Basic for Applications」ダイアログボックスが表示されました。

挿入タブ、②標準モジュールの順に選択します。

VBAコードを入力する

標準モジュールが表示されました。以下のコードをコピー&ペーストして貼り付けます

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」になっていたことが確認できました。