こんにちは、ぐーです!
突然ですが、Excelファイルを保存する際、ファイル名に「20260507」のような日付を付けて管理していませんか?
毎日これを手動で入力するのは意外と手間がかかるものです。
時には「うっかり昨日の日付にしてしまった」といった入力ミスも起こりやすいですよね。
そこで今回は、VBAを活用して「現在の日付や時刻」を自由自在に操作する方法をご紹介します。そのままコピー&ペーストで活用できる実用的なコードもご用意しました。
基本の「き」:現在の日時を取得する
まずは、VBAに「今の日付」と「今の時間」を聞いてみましょう。使うのはこの2つだけです。
- Date(デイト): 今日の日付(年月日)を取得します。
- Now(ナウ): 今日の日付と、現在の時刻(秒単位まで)をセットで取得します。
シンプルですよね。
では、実際にどう動くか見てみましょう。
Sub ShowDateAndTime()
' 今日の日付を表示(例:2026/05/07)
MsgBox "今日の日付は " & Date & " です。"
' 今の日時を表示(例:2026/05/07 18:30:15)
MsgBox "現在の日時は " & Now & " です。"
End Sub
これを実行すると、画面にメッセージボックスが表示されます。これだけで、VBAがPCのシステム時計から正確な情報を自動的に取得してくれます。
Format関数で「ファイル名用」に変換する
さて、ここからが本番です。
さきほどの Date や Now は、そのままファイル名に使えません。
なぜなら、Windowsの仕様上、日付に含まれる「/(スラッシュ)」や時刻の「:(コロン)」は、ファイル名に使用できない記号だからです。
そこで登場するのがFormat(フォーマット)関数です。
これを使うと、日付や時刻を好きな形式に「着せ替え」ることができます。
- yyyymmdd → 20250507
- yyyy年mm月dd日 → 2025年05月07日
- hhmmss → 183015(18時30分15秒)
この関数を使えば、システムから取得したデータを「保存可能な形式」へ瞬時に変換できます。
【実践】ボタン一つで「日時付きファイル」として別名保存
それでは、これらを組み合わせて、実務で即戦力となるコードを作ってみましょう。
「現在のファイル名に、今日の日付と時間をくっつけて別名保存する」コードです。
Sub SaveWithTimestamp()
Dim path As String
Dim fileName As String
Dim timeStamp As String
' 1. 保存場所は、今のファイルと同じ場所にする
path = ThisWorkbook.Path & "\"
' 2. 今の日時を「20250507_1830」の形にする
timeStamp = Format(Now, "yyyymmdd_hhmm")
' 3. ファイル名を作る(例:売上報告書_20250507_1830.xlsm)
fileName = "売上報告書_" & timeStamp & ".xlsm"
' 4. 保存
ThisWorkbook.SaveAs Filename:=path & fileName
MsgBox fileName & " という名前で保存しました!"
End Sub
ここがポイント!
注目すべきは、Format(Now, “yyyymmdd_hhmm”)の部分です。
ここを少し書き換えるだけで、職場のルールに合わせた命名ルールを自動化できます。
- 毎日1回保存なら → “yyyymmdd”
- 分単位で管理するなら → “yyyymmdd_hhmm”
このテクニックを取り入れれば、もうカレンダーを確認しながらキーボードを叩く必要はありません。正確かつスマートに、ファイル管理を効率化していきましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント