現在の日時を取得する方法を解説します。
Date/Time/Now関数を使用します。
日付・時刻ともに「Date型」で取得されますので、
テキストとして扱いたい場合はFormat関数を利用します。
基本構文
Dim 本日の日付 As Date 本日の日付 = Date Dim 現在時刻 As Date 現在時刻 = Time Dim 現在の日時 As Date 現在の日時 = Now
サンプルコード
日付型としてそのまま使用する
' n日後などの計算 Dim 期限日 As Date 期限日 = Date + 7 ' 1週間後を取得 ' 日付型のセルとの比較など If Cells(R, 2) > Date Then ' 未来の日付かを判定
文字列型として好きな形式にして使用する
' yyyy/mm/dd(aaa) 形式でセルに出力する Range("A1") = Format(Date, "yyyy/m/d (aaa)") ' ファイル名やフォルダ名にyyyymmddを使う Dim ファイル名 As String ファイル名 = "集計データ_" & Format(Date, "yyyymmdd") & ".xlsx" ' ファイル名やフォルダ名にyyyymmddhhmmを使う Dim ファイル名2 As String ファイル名2 = "集計データ_" & Format(Now, "yyyymmddhhmm") & ".xlsx"
解説
現在の日時を取得するには Date/Time/Now関数を使用します。
日付だけを取得したい場合はDate関数、時刻だけを取得したい場合はTime関数、
両方を同時に取得したい場合はNow関数を使用します。
ただしFormat関数を使用する際は使わない部分を無視することができるため、
日付だけを取得する際にNow関数を用いても問題ありません。
Debug.Print Format(Date, "yyyymmdd") ' 20251103 Debug.Print Format(Now, "yyyymmdd") ' 20251103
ファイル名やフォルダ名でhhmmをつけることもよくある場合は、
すべてNow関数に統一しておくのも一つの手と思います。
ちなみにDate型の日付をそのまま文字列として結合しようとすると、
ワークシートとは違って日付文字列として結合ができます。
| アプリ | 入力 | 結果 |
|---|---|---|
| Excel | =TODAY()&"時点" | 45964時点 |
| VBA | Date & "時点" | 2025/11/3時点 |
シート数式ではそのまま「&」でつなげたときシリアル値になってしまうのに対し、
VBAでは日付文字列として結合することが可能です。
しかし、この時取得される日付文字列はWindowsの設定に左右されるため、
ユーザーごとに違う値になってしまう危険性をはらんでいます。
※ ユーザーが曜日も表示していればこの日付文字列も曜日を含むようになります。
日付を文字列として使う場合はVBAの型変換に頼ることはせず、
Format関数で表示形式を明示して変換してください。
Date & "時点" ' × デフォルトは「2025/11/3時点」だがユーザー設定に左右される Format(Date, "yyyy/m/d") & "時点" ' ○ 確実に「2025/11/3時点」になる。