【问题标题】:word vba: webbrowser not navigating for ReadyState to checkword vba:webbrowser 没有导航到 ReadyState 进行检查
【发布时间】:2013-10-01 11:37:03
【问题描述】:

我正在尝试从网页中提取链接,但似乎 webbrowser 无法导航,所以我在 webbrowser1.readstate readystate_complete...

但是,如果在 webbrowser1.readstate readystate_complete 处设置断点,则 webbrowser 会在用户表单中成功导航,并且代码可以工作......

有什么想法吗?谢谢

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 webbrowser-control ms-word


【解决方案1】:

您在问题和答案中使用的while 循环是busy waiting 紧密循环,在等待某些事情发生时会徒劳地消耗 CPU 周期。它适用于InternetExplorer 对象(有点),因为后者在自己的单独进程中运行。它不适用于进程内WebBrowser 控制,因为您的循环不会泵送Windows 消息,而这是导航工作所必需的。如果您想坚持使用循环方法,请考虑在循环中放置 Sleep 250DoEvents 调用,以减轻忙等待和泵送消息。这仍然是not recommended,相反,您应该考虑重构代码以使用WebBrowser_DocumentComplete 事件。

【讨论】:

  • 谢谢。 DocumentComplete 方法似乎是标准方法,但我需要一种方法将所有代码保存在一个子例程中,因为它会循环到调用 IE/webbrowser 之前并使用调用之前存储的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 2013-04-12
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多