VBAでIE操作(InternetExplorer操作)
ExcelVBAマクロでIEを操作し、Webスクレイピング、Webクローリングをする事が可能です。
マクロがインターネットエクスプローラーを自動で操作し、
WEBのデータ取得・登録などの、各種WEB操作します。
以下のパーツをコピペでOK
フレームありのページの場合、よく使うIE読込待ち処理だとエラーが出る可能性があります。
VBAでIE操作「IEのフレーム内の値を取得する」【エクセルマクロ】
VBAでIE操作「IEのフレーム内のリンクをクリックする」【エクセルマクロ】
VBAでのIE操作はページ遷移後、必ずページ読み込み待ちの処理が必要です。
フレームがある場合は、親ページだけでなく、子ページ(フレーム側)の読み込み処理も考えないといけません。
'■Internet Explorerの読込待ち処理(フレームがある場合) Public Function Call_IE_WaitTimeFrame() ’■objIEがBusy(処理中なら)DoEventsで待機 Do While objIE.Busy = True DoEvents Loop ’■objIEがREADYSTATE_COMPLETE(全データ読込完了になるまで)DoEventsで待機 Do While objIE.readyState <> READYSTATE_COMPLETE DoEvents Loop ’■Frameも含めた全ての要素がcompleteになるまで待機 Do While objIE.document.readyState <> "complete" DoEvents Loop ’■操作が安定しない場合は、下記の待機処理も入れましょう。 Application.Wait [Now() + "00:00:02"] End Function
実際に使用する時は以下のような形で使用してください。
Sub test() Call Call_IE_WaitTimeFrame End Sub
注意点
今までは定数で読み込み完了を判断していましたが、今回は “complete” と文字列で返却されます。
= Do While objIE.document.readyState <> READYSTATE_COMPLETE とすると動作しません。
その他
Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。
Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。
コメント