2

我正在尝试使用 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 类有更好的了解以了解为什么会出现这种情况,我们将不胜感激任何帮助或指导。

干杯,

将要

4

1 回答 1

0

正如@Larry 建议的那样,尝试使用WinHttpRequest 对象

这是一个改编自 Larry博客的基本 GET 请求(以防万一链接失效)。

Dim result As String
Dim myURL As String
Dim winHttpReq As Object
Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")

myURL = "http://www.example.com/"

winHttpReq.Open "GET", myURL, False
winHttpReq.Send

result = winHttpReq.responseText
于 2013-11-22T13:14:11.827 回答