在当前版本的Excel(Office 365/2019年2月)中,获取近似每日FX汇率的最简单的免费方法是什么。
我对历史数据不感兴趣,我只想知道从货币X到货币Y的最后一个已知日汇率,并且在打开文档时仅自动刷新一次。
曾经有一些VBA可以从某些金融站点提取数据,但是我找不到任何仍然有效的数据。
一个可能的解决方案是openexchangerates.org,但是我将如何在Excel中使用它们的API?
答案 0 :(得分:0)
以下功能当前可在我的一本工作簿上使用:
Public Function getConversionRate(ByVal ccy1 As String, ByVal ccy2 As String) As Double
Dim htm As Object
Set htm = CreateObject("htmlFile")
With CreateObject("msxml2.xmlhttp")
.Open "GET", "https://themoneyconverter.com/" & ccy1 & "/" & ccy2 & ".aspx", False
.send
htm.body.innerhtml = .responsetext
End With
With htm.getelementbyid("cc-ratebox")
myRate = Right(.innerText, Len(.innerText) - 10)
getConversionRate = myRate
End With
htm.Close
End Function
样品用量:
为了清楚起见,以上函数在特定网站上使用了简单的XmlHttp
请求(在我的情况下是https://themoneyconverter.com,示例用法为https://themoneyconverter.com/EUR/USD
),然后搜索转换根据请求在响应中获得的HTML中的价格(对于此特定网站,该值包含在ID为cc-ratebox
的元素中)。
您当然可以在任何其他网站上做同样的事情,您要做的就是调整请求(例如.Open "GET", "your adapted link"
部分)和获取价值(例如{{ 1}}-就此网站而言,可以通过With htm.getelementbyid("cc-ratebox")
答案 1 :(得分:0)
Matteo NNZ的宏非常好:)
也可以使用数据->从Web(将网站的链接插入表格并选择表格)。之后,excel将自动从网站收集信息。为了刷新信息,您需要在新表中选择单元格,然后单击查询选项卡->刷新。
要在每次打开工作簿时刷新,只需在工作表的右侧查看,您将在“查询和连接”列表下看到您的表。在适当的表->属性上单击绑定鼠标右键,然后选择“打开文件时刷新数据”。您可以添加计时器以刷新数据,例如每分钟:)
就我而言,我使用链接:https://www.x-rates.com/table/?from=USD&amount=1
单击确定保存工作簿,它已完成。
示例:
1)用于刷新的属性:https://i.stack.imgur.com/GRTsM.png
2)有关表https://i.stack.imgur.com/7Odrh.png的信息-在这里您有来自世界各地的货币:)