VBAのIE(InternetExplorer)制御で指定したURLをIEで起動させ、Webページが完全に読み込まれるまで待機処理をするサブルーチンです。
データ抽出やインターフェースの自動化にしても必ず最初は指定した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サブルーチンは以下より確認してください。
こちらの構文と引数の内容は以下になります。尚、引数はすべて参照渡しで渡されます。
構文 | ieView(objIE,urlName,[viewFlg],[ieTop],[ieLeft],[ieWidth],[ieHeight]) | ||||
---|---|---|---|---|---|
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
objIE | InternetExplorer | InternetExplorerオブジェクトを指定します。 | objIE,objIE2 | × | |
urlName | String | InternetExplorerに表示させたいURLの文字列を指定します。 | "http://www.vba-ie.net/" | × | |
viewFlg | Boolean | 「True」を設定するとIE(InternetExplorer)が表示され、「False」を設定すると非表示になります。規定値には「True」が設定されています。 | True,False | True | ● |
ieTop | Integer | IEウィンドウのY位置の値を設定します。 | 100 | 0 | ● |
ieLeft | Integer | IEウィンドウのX位置の値を設定します。 | 150 | 0 | ● |
ieWidth | Integer | IEウィンドウの幅の値を設定します。 | 400 | 600 | ● |
ieHeight | Integer | IEウィンドウの高さの値を設定します。 | 300 | 800 | ● |
引数objIEは必須項目で、指定したURLを表示させるInternetExplorerオブジェクトを指定します。InternetExplorerオブジェクトを引数に設定することで、複数のオブジェクトを処理することができます。次の引数urlNameも必須項目で、InternetExplorerに表示させるURLを設定します。
引数viewFlgは、IEの表示・非表示の設定値をブール型(Boolean)で指定します。こちらには引数を省略できるキーワードOptionalが設定されており、規定値が「True」の省略可能な引数となります。よって省略した場合は常にInternetExplorerが表示されます。
引数ieTopはIEウィンドウのX位置の値を引数ieLeftはIEウィンドウのY位置の値を引数ieWidthはIEウィンドウの幅の値を引数ieHeightはIEウィンドウの高さの値を整数型(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ページが完全に読み込まれるまで待機します。