教えて!ExcelVBA!

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

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

GetSystemMetrics関数は、WindowsのAPIの一つで、システムのメトリックを取得するために使用されます。メトリックとは、Windowsのシステムパラメーターの値を取得するための定数のことです。たとえば、画面の幅や高さ、スクロールバーの幅、アイコンのサイズなどが該当します。この関数を使用することで、取得したメトリックの値に応じて、VBAのコードを実行することができます。

API宣言

GetSystemMetrics関数を使用するためには、まずAPI宣言を行う必要があります。API宣言とは、WindowsのAPIをVBAから呼び出すために必要な処理で、以下のように記述します。

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

この宣言により、GetSystemMetrics関数を使用するための準備が整います。

使い方

GetSystemMetrics関数は、以下のように使用します。

変数 = GetSystemMetrics(定数)

この式では、変数にメトリックの値が代入されます。定数には、取得したいメトリックの種類に応じて、以下のように定義された定数を使用します。

・SM_CXSCREEN:画面の幅をピクセル単位で取得する
・SM_CYSCREEN:画面の高さをピクセル単位で取得する
・SM_CXVSCROLL:垂直スクロールバーの幅をピクセル単位で取得する
・SM_CYHSCROLL:水平スクロールバーの高さをピクセル単位で取得する
・SM_CXICON:アイコンの幅をピクセル単位で取得する
・SM_CYICON:アイコンの高さをピクセル単位で取得する
・SM_CXMIN:ウィンドウの最小幅をピクセル単位で取得する
・SM_CYMIN:ウィンドウの最小高さをピクセル単位で取得する

このように、定数を変更することで、取得したいメトリックに応じてGetSystemMetrics関数を使用することができます。

プログラミング例

以下は、画面の幅と高さを取得するプログラム例です。

Option Explicit

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

Sub GetScreenSize()
 Dim screen_width As Long
 Dim screen_height As Long
 screen_width = GetSystemMetrics(SM_CXSCREEN)
 screen_height = GetSystemMetrics(SM_CYSCREEN)
 MsgBox "画面の幅:" & screen_width & vbCrLf & "画面の高さ:" & screen_height
End Sub

このプログラムでは、GetSystemMetrics関数を使用して、画面の幅と高さを取得しています。そして、取得した値をMsgBoxで表示しています。

まとめ

GetSystemMetrics関数は、WindowsのAPIの一つで、システムのメトリックを取得するために使用されます。変数にGetSystemMetrics関数を代入することで、メトリックの値を取得することができます。