通常、現在のシステムの日付と時刻を取得するにはNow関数を使いますが、システム開発を行っていると、もっと細かい単位(ミリ秒単位)で時刻を取得したいといった場合があります。そういった場合は、VBAだけでは無理ですのでWin32APIのGetLocalTime関数を使います。
例
現在のシステム日時を取得してメッセージボックスに表示してみたいと思います。'構造体定義
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
'Win32API宣言
Private Declare Sub GetLocalTime Lib "kernel32" (lpSystem As SYSTEMTIME)
Public Sub GetDetailTime()
Dim sysLocalTime As SYSTEMTIME
Dim result As String
'// 現在のシステム日時を取得
GetLocalTime sysLocalTime
result = sysLocalTime.wYear & "/" & _
Format(sysLocalTime.wMonth, "00") & "/" & _
Format(sysLocalTime.wDay, "00") & " " & _
Format(sysLocalTime.wHour, "00") & ":" & _
Format(sysLocalTime.wMinute, "00") & ":" & _
Format(sysLocalTime.wSecond, "00") & "." & _
Format(sysLocalTime.wMilliseconds, "000")
MsgBox "現在の詳細時刻:" & result
End Sub
まず、上記のようにSYSTEMTIME構造体定義とGetLocalTimeのWin32API宣言を行ってください。あとは、GetLocalTimeを実行して現在のシステム日時を取得します。
取得したシステム日時は、引数に指定したSYSTEMTIME型構造体に格納されます。
実行結果

スポンサーリンク