Я некоторое время боролся с этой «полностью загруженной» проблемой, но обнаружил, что следующее решение работает для меня. Я использую IE7, поэтому я не уверен, что это работает в других версиях, но стоит посмотреть.
Я разбил проблему на две части; сначала мне нужно было сообщение из события DocumentComplete;
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
fullyLoaded = True
End Sub
Затем в той части кода, где мне нужно дождаться полной загрузки веб-страницы, я вызываю другую подпрограмму, которая делает это;
Private Sub holdBrowserPage()
fullyLoaded = False
Do While fullyLoaded = False
DoEvents
Loop
fullyLoaded = False
End Sub
Кроме того, мне также нужно было сделать то же самое, ожидая завершения кода javascript. Например, на одной странице, когда вы выбираете элемент из раскрывающегося списка html, он заполняет следующий раскрывающийся список, но требует времени, чтобы раскрыть себя. В этом случае я нашел это так:
Private Sub holdBrowser()
Do While WebBrowser1.Busy Or WebBrowser1.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
End Sub
было достаточно для удержания браузера. Не уверен, что это поможет всем, как комбинация IE7, веб-сайта, который я загружал, и javascript, который работала одна страница, возможно, позволили это решение, но, безусловно, стоит попробовать.