VBA从URL下载Excel工作簿并保存到C盘



我正在尝试下载一个 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 毫秒内找不到它,它可能会很快超时。我可以想象连接可能会有点慢。

最新更新