教えて!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が起動している時間を取得するWindowsAPI関数はGetTickCount関数となります。VBAから呼び出して使用する場合には、DeclareステートメントによるDeclare Function GetTickCount Lib "Kernel32" () As Long」をプロシージャの外で宣言します。GetTickCount関数はWindowsが起動してから経過した時間をミリ秒単位で取得します。

 

使い方

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

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

Declare Function GetTickCount Lib "Kernel32" () As Long

 

Sub サンプル()

    '↓処理①
    Dim 時間 As Long
   
    '↓処理②
    時間 = GetTickCount() / 1000
    MsgBox Int(時間 / (60 * 60))
   
End Sub

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

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

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

[処理②]:GetTickCount(WindowsAPI関数)によるログイン名取得
WindowsAPI関数であるGetTickCountを使用したWindowsが起動している時間の取得になります。GetTickCountを使用する場合は後ろに「()」(カッコ)を付ける必要があるため「GetTickCount()」と記述します。また、GetTickCountは経過時間をミリ秒単位で取得するため、通常の秒に戻すには1,000で割り算をする必要があります。また、経過した時間を知りたい場合には3,600(秒・分の掛け算(60*60))で割り算をする必要があります。今回はInt関数を使用してWindowsが起動している時間を整数表示するため「4」がMsgBoxに表示されました。(Windowsを起動してから4時間が経過した事になります)

[実行例]:

Windowsが稼働している時間「4」が表示されます。

f:id:m_kbou:20200320185818p:plain

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

 

おわりに

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