エクセルVBAで指定したURLをIE表示するためのサブルーチン「ieView」

VBAのIE(InternetExplorer)制御で指定したURLをIEで起動させ、Webページが完全に読み込まれるまで待機処理をするサブルーチンです。

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

データ抽出やインターフェースの自動化にしても必ず最初は指定したURLをIEで起動させるところから始まります。 こちらの処理は何度も利用されるプログラムですので、そのような処理をサブルーチン化させると色々なメリットが生まれます。ここでは、そのようなサブルーチン化のメリットも含めて解説しています。

サブルーチンとは

サブルーチンとは、プログラム処理の中で繰り返し利用されるルーチン作業をモジュール化(部品化)してまとめたものになります。また、呼び出す側をメインルーチンと呼ぶのに対して「サブルーチン」と呼ばれます。

メリット

繰り返し利用されるルーチン作業をモジュール化(部品化)することで、同じ処理のプログラムを何度も書く手間が省け、プログラムも全体的に見やすくなります。これによりプログラムソースの可読性や保守性を高く保つことができます。

カスタマイズ内容

Sub ieView(objIE As InternetExplorer, _
           urlName As String, _
           Optional viewFlg As Boolean = True, _
           Optional ieTop As Integer = 0, _
           Optional ieLeft As Integer = 0, _
           Optional ieWidth As Integer = 600, _
           Optional ieHeight As Integer = 800)
    
  'IE(InternetExplorer)のオブジェクトを作成する
    Set objIE = CreateObject("InternetExplorer.Application")
    
    With objIE
        
    'IE(InternetExplorer)を表示・非表示
        .Visible = viewFlg
        
        .Top = ieTop 'Y位置
        .Left = ieLeft 'X位置
        .Width = ieWidth '幅
        .Height = ieHeight '高さ
        
    '指定したURLのページを表示する
        .navigate urlName
    
    End With
    
  'IE(InternetExplorer)が完全表示されるまで待機
    Call ieCheck(objIE)
    
End Sub

ieViewサブルーチン内で利用されるieCheckサブルーチンは以下より確認してください。

ieCheck

こちらの構文と引数の内容は以下になります。尚、引数はすべて参照渡しで渡されます。

ieView("IEオブジェクト","表示させたいURLの文字列","IE表示・非表示の値[省略可]","Y位置の値[省略可]","X位置の値[省略可]","幅の値[省略可]","高さの値[省略可]")
構文ieView(objIE,urlName,[viewFlg],[ieTop],[ieLeft],[ieWidth],[ieHeight])
引数名データ型内容値の事例初期値省略
objIEInternetExplorerInternetExplorerオブジェクトを指定します。objIE,objIE2×
urlNameStringInternetExplorerに表示させたいURLの文字列を指定します。"http://www.vba-ie.net/"×
viewFlgBoolean「True」を設定するとIE(InternetExplorer)が表示され、「False」を設定すると非表示になります。規定値には「True」が設定されています。True,FalseTrue
ieTopIntegerIEウィンドウのY位置の値を設定します。1000
ieLeftIntegerIEウィンドウのX位置の値を設定します。1500
ieWidthIntegerIEウィンドウの幅の値を設定します。400600
ieHeightIntegerIEウィンドウの高さの値を設定します。300800

引数objIEは必須項目で、指定したURLを表示させるInternetExplorerオブジェクトを指定します。InternetExplorerオブジェクトを引数に設定することで、複数のオブジェクトを処理することができます。次の引数urlNameも必須項目で、InternetExplorerに表示させるURLを設定します。

引数viewFlgは、IEの表示・非表示の設定値ブール型(Boolean)で指定します。こちらには引数を省略できるキーワードOptionalが設定されており、規定値が「True」の省略可能な引数となります。よって省略した場合は常にInternetExplorerが表示されます。

引数ieTopIEウィンドウのX位置の値引数ieLeftIEウィンドウのY位置の値引数ieWidthIEウィンドウの幅の値引数ieHeightIEウィンドウの高さの値整数型(Integer)で指定します。こちらもキーワードOptionalが設定されていますので、省略できます。

今回は、以下のように設定していますが、お好きな値で設定しても構いません。

 'IE(InternetExplorer)のオブジェクトを作成する
 Set objIE = CreateObject("InternetExplorer.Application")

初めにオブジェクトを参照するSetステートメントとオブジェクトを作成するCreateObject関数を利用してInternetExplorerのオブジェクトを作成します。

    With objIE
        
    'IE(InternetExplorer)を表示・非表示
        .Visible = viewFlg

こちらは、Withステートメントのオブジェクト名に「objIE」を設定しています。こちらはInternetExplorerオブジェクトになりますので、Withステートメント内では、オブジェクト名を省略して記述することができます。

Withステートメント内の処理になりますが、InternetExplorerオブジェクトのVisibleプロパティに「引数viewFlg」が設定されています。VisibleプロパティInternetExplorerの表示・非表示の設定になりますので、「True」を設定するとInternetExplorerが表示されます。

引数viewFlgの規定値は「True」が設定されていますので、省略した場合はInternetExplorerが表示されます。非表示にしたい場合は「False」を設定してください。

        .Top = ieTop 'Y位置
        .Left = ieLeft 'X位置
        .Width = ieWidth '幅
        .Height = ieHeight '高さ

次は、InternetExplorerオブジェクトの「Topプロパティ」「Leftプロパティ」「Widthプロパティ」「Heightプロパティ」に値を設定しています。それぞれの引数の値が設定されています。こちらは省略可能な引数ですので、指定しない場合は規定値が反映されます。また、単位はピクセル(1ピクセル=1/96インチ)になりますので、注意してください。

    '指定したURLのページを表示する
        .navigate urlName
    
    End With

指定したURLをInternetExplorerで表示するInternetExplorerオブジェクトのNavigateメソッドの設定です。Navigateメソッドの第一引数にはieViewサブルーチンの第二引数である表示させるWebページのURLを設定しています。

 'IE(InternetExplorer)が完全表示されるまで待機
 Call ieCheck(objIE)

End Sub

こちらは、Callステートメントを利用してWebページが完全に読み込まれるまで待機処理をするieCheckサブルーチンを呼び出しています。 引数に待機処理させるInternetExplorerオブジェクトを設定することで指定したオブジェクトのWebページが完全に読み込まれるまで待機します。