こんにちは!ぐーです。
日々の業務の中で、このような作業を繰り返していませんか?
- Excelで報告書を作る
- 「名前を付けて保存」を押す
- ファイル名の末尾に、手入力で「20251219」と今日の日付を打ち込む
これ、地味に面倒ですよね。
「あれ、今日何日だっけ?」とカレンダーを確認したり、急いでいて「202512109」なんて打ち間違えてしまったり…。
今回は、そんな日付入力の手間をなくし、一瞬で処理を完結させるVBAをご紹介します。
なぜ「2025/12/19」という形式では保存できないのか?
Excelのセル上では「2025/12/19」と表示されるのが一般的ですが、これをそのままファイル名に使うことはできません。
Windowsのシステム上のルールで、「/(スラッシュ)」はファイル名に使用できない記号の一つと定められているためです。
そのため、保存時には「20251219」のように記号を除いた形式に変換する必要があります。この変換作業を、手入力ではなくVBAに任せてしまいましょう。
コピペで使える !今日の日付を取得するコード
まずは、日付を取得するための最も重要なコードを確認します。
Format(Date, “yyyymmdd”)
この1行は、「今日の日付(Date)」を、「年月日がつながった8桁の形式(yyyymmdd)」に変換して、という命令になります。
実践:ファイル名を作って表示してみよう
まずは、意図した通りのファイル名が作成できるか、メッセージボックスで確認してみましょう。以下のコードを標準モジュールに貼り付けて実行してください。
Sub ShowTodayFileName()
' 変数の箱を用意します
Dim todayString As String
Dim fullFileName As String
' 今日の日付を「yyyymmdd」形式(例:20251219)にします
todayString = Format(Date, "yyyymmdd")
' 好きなファイル名と合体させます
fullFileName = "売上報告書_" & todayString & ".xlsx"
' 画面に表示して確認します
MsgBox "今回作成するファイル名はこれです!" & vbCrLf & fullFileName
End Sub
業務を効率化する自動保存マクロ
「確認の手間も省いて、そのまま保存まで完了させたい」という場合は、こちらのコードが便利です。
実行すると、現在開いているファイルと同じフォルダーに、日付入りの名前で別名保存されます。
Sub SaveFileWithDate()
Dim todayString As String
Dim fileName As String
Dim savePath As String
' 1. 日付の文字列を作ります
todayString = Format(Date, "yyyymmdd")
' 2. ファイル名を決めます(ここは自由に変えてOK)
fileName = "日報_" & todayString & ".xlsm"
' 3. 今のファイルと同じ場所に保存するパスを作ります
savePath = ThisWorkbook.Path & "\" & fileName
' 4. 保存実行
' FileFormat:=52 はマクロ有効ブック(.xlsm)のことです
ThisWorkbook.SaveAs Filename:=savePath, FileFormat:=52
MsgBox "保存完了!" & vbCrLf & fileName
End Sub
これまで「カレンダーを確認し、手入力で打ち込み、間違いがないかチェックする」という工程にかけていた時間が、このマクロを使えばボタン一つで完結します。
ぜひ試してみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント