Excel 通过VBA从URL下载文件的GET方法
问题描述
我通过Amazon API创建了一个报告。API返回一个URL。以下是获取该文件的说明。
我尝试了以下代码。
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
但是文件没有加载。
当我将链接复制到浏览器中时,我得到了该文件。所以,链接是正确的。
如何在不引用/打开浏览器的情况下加载文件呢?
解决方案
你离成功就差一点了,只需要添加几行代码。我会使用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