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.