教えて!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記述)

GetSystemMetrics(nIndex)

[説明]:

デスクトップの幅と高さを取得するAPI関数はGetSystemMetrics関数となります。VBAから呼び出して使用する場合には、

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

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

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

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

引数であるnIndexには取得する値の種類を指定し、「0」を指定するとデスクトップの幅を、「1」を指定するとデスクトップの高さを返します。

 

使い方

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

[プログラミング例]:

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

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

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

[処理②]:GetSystemMetricsによるデスクトップの幅と高さを取得
WindowsAPI関数であるGetSystemMetricsを使用したデスクトップの幅と高さの取得になります。引数には以下の内容をセットして処理を実行します。
・nIndex・・・取得する値の種類をセットします。
  ※幅を取得したい場合は「0」、高さを取得したい場合は「1」をセットします。
処理実行後にMsgBoxで取得した幅と高さを表示します。

f:id:m_kbou:20210522171813p:plain

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

[実行例]:

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

f:id:m_kbou:20210522171825p:plain

②結果は以下の通りとなります。MsgBoxで「幅:1920、高さ:1080」が表示されます。

f:id:m_kbou:20210522171837p:plain

[サンプル]:

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

drive.google.com

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

 

おわりに

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