2013-01-04 89 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