Internet Explorer自動操作

VBAでIE操作「開いているIEを掴む(最新のウィンドウから取得)」

開いているIEを掴む(最新のウィンドウから取得)

Excel VBAマクロでIEを自動操作する際、エラーが出て止まってしまうケースの対応策で、
開いているIEを掴む場合がありますが、最新のウィンドウから取得したい場合があります。

開いているIEを掴む(最新のウィンドウから取得)のサンプルコード

'■InternetExplorerで再度、objIEをSetしなおす。
Sub sample_IE_shell_set_objIE()
 
    Dim objIE As InternetExplorer
    Dim win As Object
    Dim winshell As Object
    Set winshell = CreateObject("Shell.Application")
    
    '■IEを起動
    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
 
    '■指定したURLに飛び、Webサイトの表示を待つ
    objIE.navigate "https://vba-create.jp/"
    
    '■シェルオブジェクトを使用し、IEを再度掴みなおす。(最新のウィンドウから取得していく)
    Dim i As Long
    For i = winshell.Windows.Length To 0 Step -1
        Set win = winshell.Windows(CInt(i))
        If win.Name = "Internet Explorer" Then
            Set objIE = win
            Exit For
        End If
    Next
    '■IE読み込み表示待ち
    Do While objIE.Busy = True
        DoEvents
    Loop
    Do While objIE.readyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
End Sub

その他

こちらはIEを掴みなおす動きをします。
=現在開いているタブとは別のタブでページを開いた際も、こちらのコードを使用します。
=別のタブをobjIEにSetしなおさないと、現在のタブがobjIEのままになってしまいます。
IEを掴みなおさないと、正常に動作しません。

その他

Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。

Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。

 

コメント

タイトルとURLをコピーしました