教えて!ExcelVBA!

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

【ExcelVBA API操作】デスクトップの幅と高さを取得(GetSystemMetrics)する方法を教えて!

       f:id:m_kbou:20200419203145p:plain

デスクトップの幅と高さを取得するWindowsAPI関数(GetSystemMetrics)について説明します。

 

【目次】

 

構文

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

=======================================================================

API定義)

Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

VBA記述)

GetSystemMetricsnIndex

=======================================================================

[説明]:

デスクトップの幅と高さを取得するWindowsAPI関数はGetSystemMetrics関数となります。VBAから呼び出して使用する場合には、DeclareステートメントによるDeclare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long」をプロシージャの外で宣言します。引数であるnIndex取得する値の種類を定数で指定します。「0」を指定するとデスクトップの幅値を返し、「1」を指定するとデスクトップの高さ値を返します。

 

使い方

[記述例]:

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

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

Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

 

Sub サンプル()

    '↓処理①
    Dim 幅 As Long
    Dim 高さ As Long
        
    '↓処理②
    幅 = GetSystemMetrics(0)
    高さ = GetSystemMetrics(1)
    MsgBox "幅:" & 幅 & Chr(13) & "高さ:" & 高さ
       
End Sub

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

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

[処理①]:変数定義
Dimによる幅と高さを格納する変数の定義となります。

[処理②]:GetSystemMetrics(WindowsAPI関数)によるデスクトップの幅と高さを取得
WindowsAPI関数であるGetSystemMetricsを使用したデスクトップの幅と高さの取得になります。GetSystemMetricsには引数として「0」を指定すると幅の値が返され、「1」を指定すると高さの値が返されます。

[実行例]:

※デスクトップの幅と高さである「幅:1920、高さ:1080」が表示されます。

f:id:m_kbou:20200320183024p:plain

WindowsAPIを使用したデスクトップの幅と高さを取得する方法についての説明は以上です。

 

おわりに

今回はWindowsAPI関数によるデスクトップの幅と高さを取得する方法について説明しました。是非参考にして下さい。