首页 > 解决方案 > 从链接下载 .csv

问题描述

我正在尝试构建一个 VBA 代码,该代码具有此日历的输入:
https ://www.fxstreet.com/economic-calendar#

在此链接中,存在以 .csv 格式下载它的选项。例如,这是下载链接。https://calendar.fxstreet.com/eventdate/?f=csv&v=2&timezone=Central+Standard+Time&rows=&view=range&start=20180909&end=20180915&countrycode=US&volatility=0&culture=en&columns=CountryCurrency%2CCountdown

我想基于它在 VBA 中定义一个代码,根据我在单元格“A1”和“A2”中的输入更改开始日期和结束日期,但由于链接的结构,这是不可能的(它没有完成.csv)。如果您在浏览器中转到下载部分,然后点击链接,它将不会再次下载,而是会出现一条错误消息。它仅在打开第一个链接并选择下载选项时才有效-因此,我无法基于它在 VBA 中构建结构。

是否存在 VBA 可以打开链接然后“选择”下载选项的方法,或者您是否有其他想法使用 VBA 下载它?

标签: vbacsvurlweb-scrapingdownload

解决方案


我在您发布的链接中没有看到任何类型的 CSV 文件,但这是您可以使用 VBA 执行此操作的一种方式。

Sub Download()

Dim myURL As String

myURL = "http://www.asx.com.au/data/options_code_list.csv"

Dim WinHttpReq As Object
Dim ostream as Object

Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False
WinHttpReq.Send
myURL = WinHttpReq.ResponseBody
    If WinHttpReq.Status = 200 Then
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open
        oStream.Type = 1
        oStream.Write WinHttpReq.ResponseBody
        oStream.SaveToFile ("C:\your_path_here\file.csv")
        oStream.Close
    End If

End Sub

推荐阅读