在当前版本的Excel(Office 365 / Feb 2019)中获取近似每日外汇汇率的最简单的免费方式是什么。
我对历史数据不感兴趣,我只想要从货币X到货币Y的最后一个已知日期汇率,并且在打开文档时只有一次自动刷新。
曾经有一些VBA可以从一些财务网站提取数据,但我找不到任何仍然有用的。
一个可能的解决方案是openexchangerates.org,但我如何在Excel中使用他们的API?
来自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的信息 - 这里你有来自世界各地的货币:)
以下功能目前适用于我的一个工作簿:
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"
部分)和检索您的价值(即With htm.getelementbyid("cc-ratebox")
部分 - 就本网站提供的内容而言通过XmlHttpRequest
简单地访问他们的价值观