InternetExplorerを操作する
VBAからInternetExplorerを操作する主要な方法をまとめてみます。
初期処理と終了処理です。初期処理ではIEを起動・表示します。後処理ではIEを閉じます。
Private Sub U_IEInit(ie As Object) Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True End Sub Private Sub U_IEEnd(ie As Object) ie.Quit Set ie = Nothing End Sub
IE処理の完了を待つためのサブモジュールです。ページを切り替えたときやフォームをサブミットした後などは、このサブモジュールでページの読み込みが完了するのを待ちます。
Enum READYSTATE READYSTATE_UNINITIALIZED = 0 READYSTATE_LOADING = 1 READYSTATE_LOADED = 2 READYSTATE_INTERACTIVE = 3 READYSTATE_COMPLETE = 4 End Enum Private Sub U_IEWait(ie) Do While ie.READYSTATE <> READYSTATE_COMPLETE DoEvents '一旦OSに制御を返す Sleep (100) '0.1秒停止 Loop Do While ie.document.READYSTATE <> "complete" DoEvents '一旦OSに制御を返す Sleep (100) '0.1秒停止 Loop Do While ie.Busy DoEvents '一旦OSに制御を返す Sleep (100) '0.1秒停止 Loop End Sub
ページを切り替えます。
ie.Navigate (<表示したいページのURL>) Call U_IEWait(ie)
ボタンをクリックします。
Dim item As Object For Each item In ie.document.getElementsByName(<ボタンタグの名前>) item.Click ' はじめの1件のみ処理します Exit For Next Call U_IEWait(ie)
指定タグのValue属性に値を設定します。
Dim item As Object For Each item In ie.document.getElementsByName(<対象タグの名前>) item.value = <設定する値> ' はじめの1件のみ処理します Exit For Next
表示中のページのHTMLを取得します。ここではデバッグ出力しています。
Debug.Print ie.document.DocumentElement.outerHTML
指定タグのHTMLを取得します。ここではデバッグ出力しています。
Dim line As Variant Dim item As Object For Each item In ie.document.getElementsByName(<対象タグの名前>) Debug.Print item.innerHTML ' はじめの1件のみ処理します Exit For Next
指定タグのValue属性を取得します。ここではデバッグ出力しています。
Dim line As Variant Dim item As Object For Each item In ie.document.getElementsByName(<対象タグの名前>) Debug.Print item.Value ' はじめの1件のみ処理します Exit For Next
ある種のタグを全て取得します。(次の例では"INPUT"をベタ書きしていますが、これを"INPUT"という値のString型変数で置き換えると上手く動きませんでした・・・。)
For Each item In ie.document.all.tags("INPUT") Debug.Print "U_IESearchItem: " & item.name & "," & item.ID & "," & item.value Next
動作確認環境
- OS : Windows XP
- Excel : 2007