Если вы используете справочную таблицу коэффициентов конверсии, VBA не нужна.
Если вы собираетесь использовать VBA, я подумал бы о том, чтобы "придумать это" и снизить самый последний коэффициент конверсии. Или вы можете сделать это, используя конкретную дату, в зависимости от того, откуда вы получаете данные.
Работа через это также расширит ваши знания о возможностях VBA.
Вот пример, который использует самые последние данные с определенного веб-сайта, но их много. Для этого ключ API бесплатный. Вы должны будете подать заявку самостоятельно.
'Set reference to Microsoft winHTTP Services 5.0
'You'll need to install a JSON converter, or perhaps parse the csv output
'You could also parse this simple JSON using Regular Expressions
Option Explicit
Option Compare Text
Function ConvertInText(S As String) As String
Dim V As Variant, W As Variant
Dim DT As Date
Dim I As Long
V = Split(S, " ")
For I = 0 To UBound(V)
If V(I) = "Dollars" Then
V(I) = "Euros"
V(I - 1) = Format(USDtoEUR(CCur(V(I - 1))), "0.00")
End If
Next I
ConvertInText = Join(V)
End Function
Private Function USDtoEUR(DOL As Currency) As Currency
Const myAPI As String = "apikey=xxxxxxxxxxxxx"
Const sURL As String = "https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=USD&to_currency=EUR&"
Dim httpRequest As WinHttpRequest
Dim strJSON As String, JSON As Object
Set httpRequest = New WinHttpRequest
With httpRequest
.Open "Get", sURL & myAPI
.Send
.WaitForResponse
strJSON = .ResponseText
End With
Set httpRequest = Nothing
Set JSON = parsejson(strJSON)
USDtoEUR = JSON("Realtime Currency Exchange Rate")("5. Exchange Rate") * DOL
End Function