教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA API操作】Windowsが起動している時間を取得(GetTickCount)する方法を教えて!

f:id:m_kbou:20200419203249p:plain

Windowsが起動している時間を取得するWindowsAPI関数(GetTickCount)について紹介します。

 

 

構文

記述方法は以下の通りとなります。

(API定義)

Declare Function GetTickCount Lib "Kernel32" () As Long

---------------------------------

(VBA記述)

GetTickCount()

[説明]:

Windowsが起動している時間を取得するAPI関数はGetTickCount関数となります。VBAから呼び出して使用する場合には、

---------------------------------

Declare Function GetTickCount Lib "Kernel32" () As Long

---------------------------------

をプロシージャ外で宣言します。

GetTickCount関数はWindowsが起動してから経過した時間をミリ秒単位で取得します。

 

使い方

使用方法について説明します。 

[プログラミング例]:

Declare Function GetTickCount Lib "Kernel32" () As Long

Sub サンプル()

  '↓処理①
  Dim 時間 As Long

  '↓処理②
  時間 = GetTickCount() / 1000
  MsgBox Int(時間 / (60 * 60))

End Sub

処理の流れは以下の通りとなります。

[処理①]:変数定義
Windowsが起動している時間を格納する変数定義となります。

[処理②]:GetTickCountによるWindows起動時間を取得
WindowsAPI関数であるGetTickCountを使用したWindowsが起動している時間の取得になります。GetTickCountを使用するには後ろに「()」(カッコ)を付ける必要があるため、「GetTickCount()」と記述します。また、GetTickCountは経過時間をミリ秒単位で取得するため、秒単位に戻すには1,000で割り算をし、経過した時間を調べるためには3,600(秒・分の掛け算(60*60))で割り算をします。最後にInt関数を使用して取得した起動時間を整数値に変換してからMsgBoxで表示します。

f:id:m_kbou:20210509072356p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210522172857p:plain

②結果は以下の通りとなります。Windowsが稼働している時間が4時間のため「4」がMsgBoxで表示されます。

f:id:m_kbou:20210522172910p:plain

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

WindowsAPIを使用したWindowsが起動している時間を取得する方法についての説明は以上です。

 

おわりに

今回はWindowsAPI関数によるWindowsが起動している時間を取得する方法について説明しました。是非参考にして下さい。