VBAでIE(InternetExplorer)ウィンドウを最前面に表示する「ieForeground 」

VBAのIE(InternetExplorer)制御に便利なサブルーチンを紹介しています。

「ieForegroundサブルーチン」の詳しい解説については、以下より確認してください。

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("IEオブジェクト")
構文ieForeground(objIE)
引数名データ型内容値の事例初期値省略
objIEInternetExplorerInternetExplorerオブジェクトを指定します。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ウィンドウを最前面に表示できるようになります。