【发布时间】:2017-10-28 13:57:51
【问题描述】:
我在 Yahoo 博客上看到说明他们已停止支持 iChart,我看到此回答 Yahoo Finance Historical data downloader url is not working 讨论历史数据的新请求格式。
这是我用来下载历史数据的原始 sn-p 代码(它是在每个股票代码的电子表格中创建一个选项卡的循环的一部分)
With Sheets(SheetName).QueryTables.Add(Connection:="URL;http://ichart.finance.yahoo.com/table.csv?s=" & yahoosymbols & "&a=09&b=29&c=1984&d=04&e=12&f=2020&g=w&ignore=.csv", Destination:=DestinationRange)
.BackgroundQuery = True
.TablesOnlyFromHTML = True
.Refresh BackgroundQuery:=False
.SaveData = False
.FieldNames = False
End With
这是使用新版本 URL 的新代码
With Sheets(SheetName).QueryTables.Add(Connection:="URL;http://query1.finance.yahoo.com/v7/finance/download/" & yahoosymbols & "?period1=947570400&period2=1577858400&interval=1wk&events=history&crumb=RhdXrQKrUXZ", Destination:=DestinationRange)
.BackgroundQuery = True
.TablesOnlyFromHTML = True
.Refresh BackgroundQuery:=False
.SaveData = False
.FieldNames = False
End With
如果我复制并粘贴 url(为 yahoosymbols 变量替换股票代码),那么它在浏览器中可以正常工作。
但是当我运行这段代码时,我得到一个 excel 1004 错误并说它无法打开 url
有什么想法吗?我不是 VBA 人,所以可能会犯一个真正的业余错误。谢谢
【问题讨论】:
-
我建议 Record Macro 手动构建网络查询并将生成的代码与您的代码进行比较。如果您的 Excel 版本支持,另一个选项可能是 Power Query。
-
链接没有问题。雅虎最近将 HTTP 迁移到 HTTPS 并且还需要 cookie(注意 URL 末尾的“Crumb”)? finance.yahoo.com/quote/YHOO/… 上的“下载数据”链接现在有了。如果您复制链接并在另一个浏览器中打开它,您会注意到它不会打开。您需要与 Yahoo Finance 服务器建立会话才能获取 crumb。我以前没有这样做过,所以必须检查
-
谢谢各位。我实际上得到了这个人的解决方案。 xlautomation.com.au/free-spreadsheets/… 查询的方法与我使用的方法有点不同,但很好地处理了所有 cookie 和 crumb 的东西
标签: vba excel yahoo-api yahoo-finance