【发布时间】:2012-12-18 11:38:54
【问题描述】:
我正在尝试使用 VBA 从本地访问数据库自动输入 Web 数据。
导航到网站后,登录页面将重定向到主菜单。但是 IE 对象的文档属性不返回任何内容。
Dim htmlDoc As MSHTML.HTMLDocument
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "http://some.website.com.au/"
IE.Visible = True
With IE
Do Until .ReadyState = 4
Loop
End with
htmlDoc = IE.Document
' At this point VBA fails as the IE.Document property is empty
....
我怀疑问题在于导航到网站后,登录页面是一个检查 cookie 并重定向的登录页面。如果我禁用 cookie 并使用代码登录它可以工作,但在登录页面之后问题是一样的。
我发现的唯一可靠信息是,对于 HTML 组件,DHTML 页面不会附加文档。这似乎有点奇怪,因为 IE 实例中显然有一个文档。
我无法找到记录此问题的其他任何地方,因此如果您遇到这种情况或者如果您对 MSHTML 类有更好的了解以了解为什么会出现这种情况,我们将不胜感激。案例。
干杯,
会
【问题讨论】:
-
嗨,OP,我想帮忙,您能验证一下代码是否完整吗?
End With、set htmlDoc = IE.Documentset关键字。如果您能提供任何有相同问题的示例网站,那将是最好的。 -
谢谢拉里,代码已完成。此后的代码无关紧要,因为它不会运行,除非 IE.document 属性返回值。
-
我访问的网站的问题是它需要一个我不愿意发布的登录名。它上面有相当数量的java,但没有什么了不起的。一些 AJAX 也是如此,但它都非常简单。 @拉里
-
所以,在你的情况下,如果你逐行执行代码,并且在执行
**SET** htmlDoc = IE.Document之前。如果在 VBE 中将 IE.Document 添加到监视窗口,它是空的?无论如何,我解决问题的方法是使用 httpRequest tkang.blogspot.sg/2010/09/… 获取您需要的 cookie、令牌 -
遗憾的是,这确实意味着我需要复制页面上所有 javascript 的功能,这些 javascript 填充了浏览器自动化允许我利用的一些隐藏数据,但我对它作为一个解决方案。谢谢你的建议。
标签: internet-explorer vba browser-automation