VBA Excel WebBrowser如何重置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中的search字段,并在同一表单的“提交”button(HTMLinput元素)上调用.Click方法。

我成功地打开search结果页面,我正在search,但浏览器控件已经在WebBrowser.ReadyState = READYSTATE_COMPLETE状态,我无法跟踪实际上浏览器控件何时完成第二次加载 – 在这种情况下的search页面。

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

由于DocumentComplete它不可靠(谢谢亚历克斯的build议!) – 有时它会在页面完全加载之前触发,导致缺less我需要的工作,我结束使用这个:

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

但是这是临时的解决scheme – 我不知道我会一直有这个myobjID在DOM! 我还在等待正确的! 请帮忙!

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

(这包括框架,如果有的话,你将需要使用事件接收的URL参数进行过滤)