【EXCEL VBA】UTC時刻を取得したい

UTC時刻を取得する方法を紹介します。AmazonのPAAPI5を利用する際、UTC時刻を指定する必要があります。外部APIを利用する際に必要な状況があるかと思います。

WbemScripting.SWbemDateTimeで解決する

WbemScripting.SWbemDateTimeをCreateObjectすることで簡単に取得することができます。時刻取得にはGetVarDate関数を使用します。引数にTrueを設定するとローカル時刻、Falseを設定するとUTC時刻を取得することができます。

注意事項としては、オブジェクト作成時は時刻が設定されていないため、SetVarDate Now()で現在時刻を設定する必要があることです。

サンプルプログラムを確認する(コピペOK)

Option Explicit

Sub sample()
   
    Dim wmDate As Object
    Set wmDate = CreateObject("WbemScripting.SWbemDateTime")
    wmDate.SetVarDate Now()     ' 初期値を設定する必要がある
    
    Debug.Print Format(Now(), "yyyy/mm/dd hh:nn:ss")                    ' 2022/07/03 00:14:45
    Debug.Print Format(wmDate.GetVarDate(True), "yyyy/mm/dd hh:nn:ss")  ' 2022/07/03 00:14:45
    Debug.Print Format(wmDate.GetVarDate(False), "yyyy/mm/dd hh:nn:ss") ' 2022/07/02 15:14:45

End Sub