参照設定
Excelマクロを使ってIEを起動する場合には「Microsoft Internet Controls」が参照設定されている必要があります。また、IEを色々と細かく操作する場合には、「Microsoft HTML Object Library」も参照設定されている必要があります。
1.まず[ツール]-[参照設定]から「参照設定」画面を起動します。
2.「Microsoft Internet Controls」「Microsoft HTML Object Library」にチェックが無ければチェックをし、[OK]ボタンを押します。
IE起動処理
IEを起動するには下記のようにコーディングします。例としてYahooの乗換案内を開きます。
'■ 変数設定
Dim objIE As InternetExplorer
'■ オブジェクト生成
Set objIE = CreateObject("InternetExplorer.Application")
'■ IEを表示
objIE.Visible = True
'■ Yahooの乗換案内へ接続
objIE.navigate "http://transit.yahoo.co.jp/"
Dim objIE As InternetExplorer
'■ オブジェクト生成
Set objIE = CreateObject("InternetExplorer.Application")
'■ IEを表示
objIE.Visible = True
'■ Yahooの乗換案内へ接続
objIE.navigate "http://transit.yahoo.co.jp/"
尚、「Microsoft Internet Controls」が参照設定されていない場合、変数設定「Dim objIE As InternetExplorer」の箇所で下記画面のように「ユーザ定義型は定義されていません。」というエラーが発生します。(変数定義で「InternetExplorer」の代わりに「Object」を使う場合、参照設定が無くてもエラーが発生しませんでした)
IE起動確認方法
IEを起動させただけではIE上のデータの読み込みや操作は出来ずにエラーとなります。オブジェクトの状態をチェックする事によってロードが完了し、操作が可能な状態が確認できます。
'読み込み待ち(READYSTATE_COMPLET = 4)
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Loop
値 | 内容 |
---|---|
0:READYSTATE_UNINITIALIZED | イニシャライズされていない |
1:READYSTATE_LOADING | データをロード中(操作不可?) |
2:READYSTATE_LOADED | データをロード完了(操作不可?) |
3:READYSTATE_INTERACTIVE | ロード中でも操作可能 |
4:READYSTATE_COMPLETE | ロードが完了し操作可能 |
'書き込み待ち
Do
'エラーの初期化
Err.Clear
'エラーが発生した場合も処理を継続する
On Error Resume Next
'出発欄に「東京」と入力
objIE.document.getElementById("sfrom").Value = "東京"
DoEvents
'エラーが無くなるまでループする
Loop Until Err.Number = 0
Do
'エラーの初期化
Err.Clear
'エラーが発生した場合も処理を継続する
On Error Resume Next
'出発欄に「東京」と入力
objIE.document.getElementById("sfrom").Value = "東京"
DoEvents
'エラーが無くなるまでループする
Loop Until Err.Number = 0
IE終了処理
もしバッチ処理でIE起動する場合、処理の終了時にIEを終了しないとプロセスが残ったままとなり、レスポンス等の問題となりますので、終了の仕方を下記に記述します。
'■ IE終了
objIE.Quit
'■ オブジェクトを解放
Set objIE = Nothing
objIE.Quit
'■ オブジェクトを解放
Set objIE = Nothing