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操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。
コメント