在当前版本的Excel (Office 365 /2019年2月)中,获取近似每日汇率的最简单免费方法是什么?
我对历史数据不感兴趣,我只想知道最近一天从货币X到货币Y的汇率,并且只在打开文档时自动刷新一次。
曾经有一些VBA可以从一些金融网站提取数据,但我找不到任何仍然有效的VBA。
一种可能的解决方案是openexchangerates.org,但是我如何在Excel中使用他们的API呢?
发布于 2019-02-21 15:59:30
来自Matteo NNZ的宏真的很好:)
也可以使用web上的Data -> (插入带有表格的网站链接并选择表格)。之后,excel将自动从网站收集信息。为了刷新信息,您需要选择新表中的单元格,然后单击Query选项卡-> Refresh。
为了在每次打开工作簿时刷新,只需查看工作表的右侧,您就会在查询和连接列表下看到您的表。在适当的表格->属性上点击鼠标右键并选择“打开文件时刷新数据”。您可以添加计时器来刷新数据,例如每隔一分钟:)
在我的例子中,我使用link: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的信息-这里有来自世界各地的货币:)
发布于 2019-02-21 15:51:14
以下函数当前适用于我的一个工作簿:
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
),然后在请求的响应中获得的XmlHttp
中搜索相应的转换价格(对于这个特定的网站,该值包含在一个id为cc-ratebox
的元素中)。
当然,您也可以对任何其他网站执行相同的操作,您所需要做的就是调整请求(即部分.Open "GET", "your adapted link"
)和检索您的值(即部分With htm.getelementbyid("cc-ratebox")
-只要此网站通过XmlHttpRequest
提供对它们的值的简单访问
https://stackoverflow.com/questions/54801353
复制相似问题