ray88’s diary

お仕事で困ったとき用の自分用の覚書

画面移動の完了を待つ

■方法1:Busyプロパティを監視する
     Busyプロパティの値が「True」の間はIEは処理要求を受け付けられない。値が「False」になるのを待ってから処理を行うようにする。

Sub test()
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")    
    ie.Visible = True    
    ie.navigate "https://www.google.com"    
    Do While ie.Busy
        Debug.Print ie.Busy
        DoEvents
    Loop    
    MsgBox ie.document.body.innertext
End Sub

■方法2:「ReadyState」プロパティを監視する
     0~4までの5段階ステップがあり、最終ステップは4(READYSTATE_COMPLETE)
ループ条件に「ReadyStateプロパティが4より小さい場合」を指定する。

Sub test()
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")    
    ie.Visible = True    
    ie.navigate "https://www.google.com"       
    Do While ie.Busy Or ie.ReadyState < 4
        Debug.Print ie.Busy & ":" & ie.ReadyState
        DoEvents
    Loop    
    MsgBox ie.document.body.innertext
End Sub