Excel VBA如何从网页(不caching)读取文本文件?

我一直使用下面的代码从网上读取文本文件:

'import the text file into a string Function DownloadTextFile(URL As String) As String On Error GoTo Err_GetFromWebpage Dim objWeb As Object Dim strXML As String ' Instantiate an instance of the web object Set objWeb = CreateObject("Microsoft.XMLHTTP") ' Pass the URL to the web object, and send the request objWeb.Open "GET", URL, False objWeb.send ' Look at the HTML string returned strXML = objWeb.responseText DownloadTextFile = strXML End_GetFromWebpage: ' Clean up after ourselves! Set objWeb = Nothing Exit Function Err_GetFromWebpage: ' Just in case there's an error! MsgBox Err.Description & " (" & Err.Number & ")" Resume End_GetFromWebpage End Function 

它第一次运行良好,但是当我对文本文件进行更改时,它不会反映在返回的string中。 就像Excel正在caching文件一样。 我能做些什么来解决这个问题? 谢谢!

没有URL是不可能的,但是你是否尝试过使用setRequestHeader和no-cache ?

例:

 objWeb.setRequestHeader "Content-Type", "text/xml" objWeb.setRequestHeader "Cache-Control", "no-cache" objWeb.setRequestHeader "Pragma", "no-cache" 

除了按照@dee的build议设置请求标题外,我还将“Microsoft.XMLHTTP”更改为“Msxml2.ServerXMLHTTP”,现在它可以工作了! 这是最后的代码:

 'import the text file into a string Function DownloadTextFile(URL As String) As String On Error GoTo Err_GetFromWebpage Dim objWeb As Object Dim strXML As String ' Instantiate an instance of the web object Set objWeb = CreateObject("Msxml2.ServerXMLHTTP") ' Pass the URL to the web object objWeb.Open "GET", URL, False 'don't cache the file objWeb.setRequestHeader "Content-Type", "text/xml" objWeb.setRequestHeader "Cache-Control", "no-cache" objWeb.setRequestHeader "Pragma", "no-cache" 'send the request objWeb.send ' Look at the HTML string returned strXML = objWeb.responseText DownloadTextFile = strXML End_GetFromWebpage: ' Clean up after ourselves! Set objWeb = Nothing Exit Function Err_GetFromWebpage: ' Just in case there's an error! MsgBox Err.Description & " (" & Err.Number & ")" Resume End_GetFromWebpage 

结束function

Interesting Posts