VBAでIE操作(InternetExplorer操作)
ExcelVBAマクロでIEを操作し、Webスクレイピング、Webクローリングをする事が可能です。
マクロがインターネットエクスプローラーを自動で操作し、
WEBのデータ取得・登録などの、各種WEB操作します。
以下のパーツをコピペでOK
今回はIE操作で必要な、待機処理です。
指定したページへ遷移しても、Webページの読込前に次の処理をすると、エラー発生してしまいます。
VBAでのIE操作はページ遷移後、必ずページ読み込み待ちの処理が必要です。
'■Internet Explorerの読込待ち処理
Public Function Call_IE_WaitTime()
’■objIEがBusy(処理中なら)DoEventsで待機
Do While objIE.Busy = True
DoEvents
Loop
’■objIEがREADYSTATE_COMPLETE(全データ読込完了になるまで)DoEventsで待機
Do While objIE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
’■操作が安定しない場合は、下記の待機処理も入れましょう。
Application.Wait [Now() + "00:00:02"]
End Function
実際に使用する時は以下のような形で使用してください。
Sub test()
Call Call_IE_WaitTime
End Sub
コードの意味
READYSTATE_COMPLETEは定数
| 定数 | 戻り値 | 説明 |
|---|---|---|
| READYSTATE_UNINITIALIZED | 0 | 未完了。デフォルト値。 |
| READYSTATE_LOADING | 1 | ロード中。 |
| READYSTATE_LOADED | 2 | ロード完了。ただし操作不可能状態。 |
| READYSTATE_INTERACTIVE | 3 | IE操作可能。 |
| READYSTATE_COMPLETE | 4 | 全データ読込完了。 |
DoEvents
マクロはループ状態の際、OS(Windows)にも処理をさせず、ループ処理を続けます。
DoEventsがないと、Internet Explorerが処理読み込むまでフリーズしたように見えるため、
一度DoEventsでOS側に処理を渡します。
注意点
IEのスクレイピングは100%動くものだとマクロを組む概念は捨てましょう。エラーとうまく付き合い、対処するように考えましょう。
VBAでIE操作「エラーに負けない」【エクセルマクロ】
その他
Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。
Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。



コメント