excel - VBA Excel WebBrowser如何在.Click之前从代码中重置ReadyState?

标签 excel vba webbrowser-control reset readystate

我在 Excel VBA 中有类似的代码,并在表单中插入了 WebBrowser 控件:

basePath = "http://www.amazon.co.uk/"
' Open main website (Home page)
WebBrowser.Navigate basePath

PauseTime = 30 ' Set duration to wait in seconds.
Start = Timer ' Set start time.
Do ' While Timer < Start + PauseTime
    DoEvents ' allow other processes to work (the browser to have time to load the webpage)
Loop Until WebBrowser.ReadyState = READYSTATE_COMPLETE Or Timer > Start + PauseTime

这样我就打开了指定的 URL。
然后,我将条形码值放在 HTML 的搜索字段中,并在同一表单的“提交”按钮(HTML 输入元素)上调用 .Click 方法。

我用我正在搜索的内容成功打开了搜索结果页面,但是浏览器控件已经处于 WebBrowser.ReadyState = READYSTATE_COMPLETE 状态,并且我无法跟踪浏览器控件何时完成第二次加载 - 在这种情况下是搜索页面。

有没有办法重置 ReadyState 属性以了解第二次加载何时完成?

最佳答案

因为DocumentComplete它不可靠(感谢 Alex 的建议!) - 有时它会在页面完全加载之前触发,导致我的工作需要的部分丢失,我结束了使用这个:

Set MyObj = Nothing
Do
    DoEvents
    Set MyObj = WebBrowser.Document.all("myobjID")
Loop Until Not MyObj is Nothing

但这是临时解决方案 - 我不确定我是否会在 DOM 中始终拥有这个 myobjID!

关于excel - VBA Excel WebBrowser如何在.Click之前从代码中重置ReadyState?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16605057/

相关文章:

excel - 以编程方式将 ComboBox 插入单元格内

vba - Access VBA - 在 Excel Sheet1 列 A 中搜索值并将相应的值放入 B 列?

Excel 和在两个下拉列表之间更改值

c# - 在不预览的情况下打印 WebBrowser,即单击打印

browser - F5、Ctrl + F5 和单击刷新按钮之间的区别?

c# - WinForms 应用程序中的 Webbrowser HTML 文件存储目录?

excel - 计算值出现的次数

java - 将 Excel 文件合并到单个工作簿中

c# - 使用 OpenXml sdk 2.0 创建 Excel 文档

arrays - 数组可以声明为常量吗?