2013-01-04 54 views
2

我试图使用VBA从本地访问数据库中自动化Web数据输入。访问IWebBrowser2文档属性返回空

导航到网站后,登录页面将重定向到主菜单。但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类有更好的了解,以了解为什么会出现这种情况,我无法在其他地方找到此问题的任何记录,因此如果您有任何帮助或方向,案子。

欢呼声,

请问

+0

您好OP,我想帮忙,您能验证代码是否完整? '结束与','设置htmlDoc = IE.Document''设置'关键字。如果您可以提供任何具有相同问题的示例网站,这将是最好的。 – Larry

+0

谢谢拉里,代码完整。此点之后的代码是不相关的,因为它不会运行,除非IE.document属性返回一个值。 – user1947188

+0

im访问网站的问题是它需要一个我不愿发布的登录信息。它有一个合理的数量的Java,但没有什么壮观。一些AJAX也是如此,但它非常简单。 @Larry – user1947188

回答

0

如建议通过@Larry尝试使用WinHttpRequest object

这是改编自拉里的blog(以防万一链路出现死)一个基本的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