Word vba: webbrowser не просматривает ReadyState для проверки
0 user2468695 [2013-09-25 21:21:00]
Я пытаюсь извлечь ссылки с веб-страниц, но кажется, что webbrowser не перемещается, поэтому я получаю бесконечный цикл в webbrowser1.readstate < > readystate_complete...
ОДНАКО, если сделать точку останова в webbrowser1.readstate < > readystate_complete, веб-браузер будет успешно перемещаться в пользовательской форме, а код работает....
Любые идеи? Благодаря
Do Until n = num
WebBrowser1.Navigate URL
Do While WebBrowser1.readyState <> READYSTATE_COMPLETE
Loop
If WebBrowser1.readyState = READYSTATE_COMPLETE Then
'code
end if
n = n +1
loop
vba ms-word word-vba webbrowser-control
1 ответ
3 Решение Noseratio [2013-09-26 07:08:00]
Цикл while, который вы используете в своем вопросе, и в вашем ответе есть занят в ожидании жесткой петли, тщетно потребляя циклы процессора, пока ожидая чего-то. Он работает (вроде) для объекта InternetExplorer, потому что последний работает в своем отдельном процессе. Он не работает для управления процессом WebBrowser, потому что ваш цикл не передает сообщения Windows, необходимые для навигации. Если вы хотите придерживаться подхода цикла, подумайте о размещении Sleep 250 и DoEvents вызовы внутри вашей петли, чтобы уменьшить ожидание ожидания и сообщения о насосе. Это по-прежнему не рекомендуется, вместо этого вы должны подумать о повторной факторизации кода, чтобы использовать WebBrowser_DocumentComplete.