2013-07-16 37 views
0

我有一個VBScript通過QueryTables獲取數據到Excel工作表。該腳本工作正常,但URL是需要基本身份驗證的服務器。所以當腳本運行時,登錄彈出詢問用戶名密碼。無論如何,請以編程方式提供此用戶名和密碼。QueryTable身份驗證

我的QueryTable是這樣

Set objWeb = wks.QueryTables.Add(URL,wks.Range("A1")) 
With objWeb 
    .WebSelectionType = xlSpecifiedTables 
    .WebTables = sWebTable 
    .Refresh False 
    .SaveData = True 
End With 

幫我出...

+0

似乎不可能。請參見[此類似的問題](http://stackoverflow.com/q/14088474/1630171)。 –

+0

但httprequest是否可以用於基於asp的頁面請問您可以舉個例子 –

回答

0

XMLHttpRequest可能是這樣的:

url = "http://www.example.org/" 
credentials = "username=jsmith&password=foobar" 

Set req = CreateObject("Msxml2.XMLHttp.6.0") 
req.open "POST", url, False 
req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
req.send credentials 

If req.Status = 200 Then 
    html = CreateObject("HTMLFile") 
    html.write req.responseText 
    'do stuff with HTMLDocument object 
End If 

您需要更改url實際的URL和根據服務器的要求調整credentials。像Fiddler這樣的工具將幫助您找出證書字符串的外觀。

如果你寫responseTextHTMLDocument對象,你可以用通常的方法,如getElementById()getElementsByTagName()標籤工作。

+0

謝謝Ansgar,這種方法更好,並且有很多選項。但結果中的響應文本僅僅是頁面的源代碼。有沒有什麼辦法可以從html標籤中獲得價值。目前它存儲在一個字符串中,並且它充滿了嵌套表格,因此很難獲取特定的數據。 –

+0

創建一個'HTMLFile'對象並將'responseText'加載到該對象中。查看更新的答案。 –