VBA Excel WebBrowser之前如何重置ReadyState。从代码中点击?

时间:2013-05-17 08:51:46

标签: 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

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

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

有没有办法重置ReadyState属性以便知道第二次加载何时结束?

2 个答案:

答案 0 :(得分:1)

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

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

但这是临时解决方案 - 我不确定我会在DOM中始终拥有这个myobjID! 我还在等着合适的人! 请帮忙!

答案 1 :(得分:0)

使用文档完全加载时引发的DocumentComplete事件,因此每次调用.Navigate时都会触发该事件。

(这包括框架,所以如果有任何框架,你需要使用事件收到的URL参数过滤它们)