Excel 通过VBA从URL下载文件的GET方法

Excel 通过VBA从URL下载文件的GET方法

问题描述

我通过Amazon API创建了一个报告。API返回一个URL。以下是获取该文件的说明。

Excel 通过VBA从URL下载文件的GET方法

我尝试了以下代码。

Sub t()

TargetURL = "https://offline-report-storage-eu-west-1-prod.......d"
'Set HTTPReq = CreateObject("MSXML2.XMLHTTP")
'Set HTTPReq = CreateObject("MSXML2.ServerXMLHTTP")
Set HTTPReq = CreateObject("WinHttp.WinHttpRequest.5.1")
HTTPReq.Option(4) = 13056 '
HTTPReq.Open "GET", TargetURL, False
HTTPReq.send 

End Sub

看起来请求没问题 – 状态为200

Excel 通过VBA从URL下载文件的GET方法

但是文件没有加载。

当我将链接复制到浏览器中时,我得到了该文件。所以,链接是正确的。

如何在不引用/打开浏览器的情况下加载文件呢?

解决方案

你离成功就差一点了,只需要添加几行代码。我会使用ADODB.Stream来保存响应为一个文件:

   ' Is reqeust successful?
    If HTTPReq.Status = 200 Then
        Set FileStream = CreateObject("ADODB.Stream")
        FileStream.Open
        FileStream.Type = 1 ' Binary stream
        FileStream.Write HTTPReq.responseBody
        FileStream.Position = 0
        FileStream.SaveToFile LocalFileName, 2 ' Overwrite file exists
        FileStream.Close
    Else
        MsgBox "Error: " & HTTPReq.Status & " " & HTTPReq.statusText
    End If

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程