2011-03-08 49 views
2

我試圖通過HTTP從遠程服務器打開一個Word文檔。 Documents.Open方法支持這一點很好,因爲我可以將它作爲文件名傳遞給URL,並從遠程服務器加載它。如何增強VBA方法?

但是,爲了獲取文件,我需要POST憑據到一個URL,然後按照響應的位置字段來獲取文件。在將內容傳遞給Word之前,如何繼承或重載Documents對象以執行此步驟?

忘了提及 - 這使用基於cookie的身份驗證,所以我需要在各種HTTP會話之間保存經過身份驗證的cookie。

編輯#2:或者,

如果我會得到所做的會後的驗證,從響應解析出的Set-Cookie和位置標頭,並使用它們來得到一個完整的基於MSXML2.XMLHTTP子程序來自服務器的文檔內容,有沒有什麼辦法可以將內存中的文檔作爲文件打開,而不是將臨時文件轉儲到文件系統中?從閱讀文檔開始,Open()只支持文件名(或路徑)。我相信有一種.NET方法可以實現這一點,我相信,但有沒有什麼辦法可以暴露給COM,所以我可以將字節流轉儲到一個函數中,獲得一個文件句柄,然後通過那要.Open()來處理?

回答

0

您可以使用XMLHTTP執行帖子,然後解析路徑的響應。據我雖然知道,你不能覆蓋像。開()

http://www.15seconds.com/issue/991125.htm

中途那一頁有一個在VBA一個POST例如

內置方法
+0

知道我忘記了一些東西 - 我可以通過這種方式獲取URL,但POSTing認證過程設置了一個cookie,然後用它來訪問文件的URL。如果cookie沒有設置,它只需要再次進行身份驗證。內置.Open()方法使用的HTTP請求時是否有任何方法強制標頭? – Oesor 2011-03-08 20:13:57

+0

我不知道Word在通過HTTP打開文檔時發送了什麼標題,以及它們是否包含Cookie。您可以隨時使用Fiddler或類似的方式進行檢查。最糟糕的情況是,您可以在URL上執行GET操作,再次使用xmlhttp,並將文檔保存到臨時目錄。 – 2011-03-09 06:02:45