VBAのIE(InternetExplorer)制御に便利なサブルーチンを紹介しています。
IE(InternetExplorer)ウィンドウを最前面に表示させる方法について説明します。例えばBASIC認証を自動化させたい場合、確実にSendKeysステートメントを利用できるよう最初にIEウィンドウを最前面に設定しておくと非常に便利です。
サブルーチンとは、プログラム処理の中で繰り返し利用されるルーチン作業をモジュール化(部品化)してまとめたものになります。また、呼び出す側をメインルーチンと呼ぶのに対して「サブルーチン」と呼ばれます。
繰り返し利用されるルーチン作業をモジュール化(部品化)することで、同じ処理のプログラムを何度も書く手間が省け、プログラムも全体的に見やすくなります。これによりプログラムソースの可読性や保守性を高く保つことができます。
Declare Function IsIconic Lib "user32.dll" (ByVal hWnd As Long) As Long
Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long) As Long
Declare Function ShowWindowAsync Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal nCmdShow As Long _
) As Long
Const SW_RESTORE As Long = 9
Sub ieForeground(objIE As InternetExplorer)
'ウィンドウが最小化されているかのチェック
If IsIconic(objIE.hWnd) Then
ShowWindowAsync objIE.hWnd, SW_RESTORE
End If
'IEを最前面に表示
SetForegroundWindow (objIE.hWnd)
End Sub
Declare Function IsIconic Lib "user32.dll" (ByVal hWnd As Long) As Long
Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long) As Long
Declare Function ShowWindowAsync Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal nCmdShow As Long _
) As Long
Const SW_RESTORE As Long = 9
まず、最前面表示に必要なWindows APIを使用できるようにAPIの宣言をします。宣言するAPIはIsIconic関数・SetForegroundWindow関数・ShowWindowAsync関数の3つです。また、定数SW_RESTOREに「9」を設定しています。こちらの値はShowWindowAsync関数の引数に利用されます。
Sub ieForeground(objIE As InternetExplorer)
こちらはSubステートメントに引数を1つ設定しているieForegroundサブルーチンになります。こちらの構文と引数の内容は以下になります。尚、引数はすべて参照渡しで渡されます。
構文 | ieForeground(objIE) | ||||
---|---|---|---|---|---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
objIE | InternetExplorer | InternetExplorerオブジェクトを指定します。 | objIE,objIE2 | × |
こちらは、必須項目となります。「objIE」にはIEオブジェクトを設定します。複数のIEオブジェクトを操作する場合には「objIE」「objIE2」といった操作するIEオブジェクトを指定してください。オブジェクト作成により、プロパティやメソッドの利用が可能となりIE(InternetExplorer)を制御することがでます。
'ウィンドウが最小化されているかのチェック
If IsIconic(objIE.hWnd) Then
ShowWindowAsync objIE.hWnd, SW_RESTORE
End If
こちらは、IEウィンドウが最小化されているかのチェックを行っています。IEウィンドウが最小化されている場合が「真(True)」になりますので、指定されたウインドウの表示状態を設定するShowWindowAsync関数が実行されます。
'IEを最前面に表示
SetForegroundWindow (objIE.hWnd)
End Sub
指定したウィンドウを最前面に表示させるSetForegroundWindow関数にIEウィンドウのハンドルを設定しています。こちらを利用することで、IEウィンドウを最前面に表示できるようになります。