【发布时间】:2021-06-30 20:04:12
【问题描述】:
我想创建一个 Excel 函数,可以获取给定日期两种给定货币之间的汇率。比如:=GetFX("USD","GBP","31/12/2020")
我在Reddit thread 上找到了下面的代码,它正是这样做的,只是它已经过时并且不再与 Oanda 一起使用。我不知道如何将 Excel VBA 与外部数据一起使用,也不知道出了什么问题。如果有人知道如何解决它,我将不胜感激。
谢谢!
Function GetOandaFX(fromCurr As String, toCurr As String, AsofDate As Date) As String
Dim oHttp As Object
Dim sURL As String
Dim HTMLdoc As Object
Dim TDelements As Object
Dim TDelement As Object
' Create an XMLHTTP object
Set oHttp = CreateObject("MSXML2.XMLHTTP")
' get the URL to open
sURL = "https://www.oanda.com/fx-for-business/historical-rates?" _
& "date=" & AsofDate _
& "date_fmt=us" _
& "&exch=" & fromCurr _
& "&sel_list=" & toCurr _
& "&value=1&format=HTML&redirected=1"
' open connection and get website html
oHttp.Open "GET", sURL, False
oHttp.send
Set HTMLdoc = CreateObject("htmlfile")
With HTMLdoc
If oHttp.readyState = 4 And oHttp.Status = 200 Then 'readystate checks loading, status checks the validity of URL
' ' assign the returned text to a HTML document
.body.innerHTML = oHttp.responseText
Set TDelements = .getElementsByTagName("TD")
'Loop within Table elements
For Each TDelement In TDelements
If RateFound = True Then
GetOandaFX = TDelement.innerText
Exit For
End If
If TDelement.innerText = toCurr Then RateFound = True
Next
End If
End With
Set oHttp = Nothing
End Function
【问题讨论】:
-
对于历史外汇汇率,我建议查看 https://www.alphavantage.co/ 并使用他们的 API。该 API 可免费用于偶尔使用。