使用 excel vba 从 Web 下载 zip 文件

Posted

技术标签:

【中文标题】使用 excel vba 从 Web 下载 zip 文件【英文标题】:Download zip file from web using excel vba 【发布时间】:2020-07-19 12:45:38 【问题描述】:

我是 excel 新手,我正在关注 this link 使用 excel vba 下载 zip 文件。

        UrlFile = "https://www1.nseindia.com/content/historical/EQUITIES/2020/MAR/cm13MAR2020bhav.csv.zip"
        On Error GoTo exit_
        With CreateObject("MSXML2.XMLHTTP")
         .Open "GET", UrlFile, False
         .setRequestHeader "Upgrade-Insecure-Requests", "1"
         .setRequestHeader "Sec-Fetch-Dest", "document"
         .send
        If .Status <> 200 Then Exit Function
        b() = .responseBody
        FN = FreeFile
        Open PathName For Binary Access Write As #FN
        Put #FN, , b()
    exit_:
         MsgBox Err.Description
        If FN Then Close #FN
        Url2File = .Status = 200
      End With

在上面的代码中执行.send,总是报错“指定资源下载失败”。请帮我解决这个问题。 p>

【问题讨论】:

这能回答你的问题吗? How do I download a file using VBA (without Internet Explorer) 我也使用了“Microsoft.XMLHTTP”,我的代码类似于给定链接中的代码。但我收到错误,下载失败。 【参考方案1】:
Public Function DownloadFile()

Dim myURL As String
myURL = "https://www1.nseindia.com/content/historical/EQUITIES/2020/MAR/cm13MAR2020bhav.csv.zip"

Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False
WinHttpReq.send

If WinHttpReq.Status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type = 1
    oStream.Write WinHttpReq.responseBody
    oStream.SaveToFile "C:\Users\praburaj\Downloads\file.zip", 2 ' 1 = no overwrite, 2 = overwrite
    oStream.Close
End If

End Function

【讨论】:

以上是关于使用 excel vba 从 Web 下载 zip 文件的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA 如何从 Web 读取文本文件(未缓存)?

如何使用 Excel VBA 登录网站并下载文件

使用 Excel vba,将 Web 图像保存到磁盘

使用 SOAP 从 VBA 调用 Web 服务

Excel VBA教务考试成绩管理——考场编排系统下载及使用说明

VBA 使用多标准从 Outlook 下载电子邮件附件