朝会発表テーマ

Access VBAでミリ秒を取得する

1.処理時間を計測する場合

Access VBA標準の命令で「Timer関数」が用意されているのでそれを用いる。
Timer関数・・・戻り値で午前0時からの経過秒数を表す。小数点以下の値でミリ秒単位も取得可能。

下記プログラムでは、メッセージボックス表示前後でTimer関数の戻り値を取得しておき、
差を求めることで、メッセージボックスが表示された時間を計測、イミディエイトウィンドウに表示している。

※午前0時をまたぐ場合に注意。
例えば、上のサンプルプログラムで23時59分59秒に計測開始 ~ 0時0分0秒に計測終了した場合は
「処理時間は-86399秒です。」と表示される。

2.現在日時をミリ秒単位で知りたい場合

Access VBA標準の命令で取得できないのでWindows APIの関数を利用する。

下記プログラムでは、メッセージボックス表示前後の日時をイミディエイトウィンドウに表示している。
プログラム実行前に、予めWindows APIを利用した自作関数「gf_NowEx関数」(裏面参照)を作成している。

参考URL
Timer 関数 – MSDN
https://msdn.microsoft.com/ja-jp/library/office/gg264416.aspx

GetLocalTime – MSDN
https://msdn.microsoft.com/ja-jp/library/cc429760.aspx

【VB6・VBAメモ】WindowsAPI:GetLocalTime関数 – フィロの村note
http://note.phyllo.net/?eid=1106249

補足資料

Windows API「GetLocalTime関数」を利用してAccess VBA上でミリ秒付きの日時を求めるVBAの関数を実装。
※標準モジュール上に作成する想定

コメント