Исходный файл .json такой же простой:
{
"rates": {
"EURUSD": {
"rate": 1.112656,
"timestamp": 1559200864
}
},
"code": 200
}
Я могу вернуть значение "timestamp"
, но используя тот же подход, я не могу вернуть значение "rate"
.
Это работает без проблем:
Sub current_eur_usd()
Dim scriptControl As Object
Set scriptControl = CreateObject("MSScriptControl.ScriptControl")
scriptControl.Language = "JScript"
Dim oJSON As Object
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://www.freeforexapi.com/api/live?pairs=EURUSD", False
.send
Set oJSON = scriptControl.Eval("(" + .responsetext + ")")
.abort
End With
MsgBox oJSON.rates.EURUSD.timestamp '<<< 'timestamp' works, 'rate' fails
Set oJSON = Nothing
Set scriptControl = Nothing
End Sub
Но когда я пытаюсь заменить timestamp
на rate
, я получаю сообщение об ошибке с выделением строки MsgBox
.
Ошибка выполнения "438":
Объект не поддерживает это свойство или метод.
Я думаю, что проблема заключается в том, что VBA автоматически использует заглавную букву rate
.
MsgBox oJSON.rates.EURUSD.rate
автоматически превращается в
MsgBox oJSON.rates.EURUSD.Rate
Как я могу вернуть значение "rate"
?
CallByName
. - person ZygD   schedule 30.05.2019