教えて!ExcelVBA!

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

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

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

API宣言

ExcelVBAでは、GetSystemMetrics関数を使用する前にAPI宣言を行う必要があります。API宣言を行うことで、ExcelVBAがWindowsAPI関数を認識することができるようになります。API宣言は次のように行います。

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

解説

パラメータ 内容
Lib 使用する動的リンクライブラリ(DLL)の名前を指定します。ここでは "user32.dll"となります。

引数については以下の通りです。

引数 内容
nIndex この引数には、システムメトリックの定義された定数または数値が渡されます。システムメトリックは、システムのさまざまな属性や設定に関する情報を提供します。システムメトリックの種類を以下で紹介します。

システムメトリックには以下の設定値が指定できます。

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

使い方

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

変数 = GetSystemMetrics(定数)

この式では、変数にメトリックの値が代入されます。定数には上記で紹介した定数を指定します。定数を変更することで、取得したいメトリックに応じてGetSystemMetrics関数を使用することができます。

プログラミング例

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

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関数は、システムのメトリックを取得するために使用されます。変数にGetSystemMetrics関数を代入することで、メトリックの値を取得することができます。