2017年10月2日

【Access】現在のシステム日時をミリ秒単位まで取得する


通常、現在のシステムの日付と時刻を取得するには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型構造体に格納されます。


実行結果








スポンサーリンク