我正在尝试下载一个 excel 工作簿并将其保存到本地计算机上的用户 c 驱动器。由于某种原因,我得到以下行在此上下文中不允许的错误操作:
oStream.Write WinHttpReq.ResponseBody
有人可以告诉我我哪里出错了吗?
谢谢
Dim myURL As String
myURL = "http://eu.storagemadeeasy.com/files/357eb15ab28bade4da58c149506d00d8.xls"
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("MSXML2.ServerXMLHTTP.6.0")
WinHttpReq.Open "GET", myURL, False
WinHttpReq.Send
myURL = WinHttpReq.ResponseBody
If WinHttpReq.Status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 2
oStream.Write WinHttpReq.ResponseBody
oStream.SaveToFile ("C:logs.xls")
oStream.Close
End If
- 使用二进制流
-
现代版本的窗口不允许写入 C: 的根目录,使用不同的路径。
oStream.Type = 1 oStream.Write WinHttpReq.ResponseBody oStream.SaveToFile Environ$("TEMP") & "logs.xls" '// users temp dir
我使用Excel 2010和Windows 7。
这种代码有时对我有用。但不是每次。我得到HttpReq.Status = 404 摩尔经常比 HttpReq.Status = 200。
Dim HttpReq As Object
Set HttpReq = CreateObject("Microsoft.XMLHTTP")
HttpReq.Open "GET", myURL, False
Application.Wait Now + TimeValue("0:00:10")
**HttpReq.send**
Application.Wait Now + TimeValue("0:00:05")
myURL = HttpReq.responseBody
**If HttpReq.Status = 200 Then**
Set oStrm = CreateObject("ADODB.Stream")
oStrm.Open
oStrm.Type = 1
oStrm.Write HttpReq.responseBody
oStrm.SaveToFile "C:UsersMiLarssoDownloads" & "" & "Narvarotid1.xls", 2 ' 1 = no overwrite, 2 = overwrite
oStrm.Close
End If
我实际上相信该文件在那里,因为它显示在网络浏览器中。如果在 100 毫秒内找不到它,它可能会很快超时。我可以想象连接可能会有点慢。