VBAmacros,types不匹配错误

我想在Excel中获取JSON数据并parsing它。 但是,我收到错误:types不匹配。

有谁知道我可以解决这个问题? 我无法弄清楚我做错了什么。

这是我使用的API的链接: https : //min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD

这里是代码:

Public Sub exceljson() Dim https As Object, JSON As Object, i As Integer Set https = CreateObject("MSXML2.XMLHTTP") https.Open "GET", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD", False https.Send Set JSON = ParseJson(https.responseText) i = 2 For Each Item In JSON Sheets(1).Cells(i, 1).Value = Item("USD") i = i + 1 Next MsgBox ("complete") End Sub 

如果您确认您已正确导入JsonConverter模块和Dictionary Class并参考Microsoft Scripting Runtime ,那么以下代码将起作用:

  Public Sub exceljson() Dim https As Object, Json As Object, i As Integer Dim Item As Variant Set https = CreateObject("MSXML2.XMLHTTP") https.Open "GET", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD", False https.Send Set Json = JsonConverter.ParseJson(https.responseText) i = 2 For Each Item In Json.Items Sheets(1).Cells(i, 1).Value = Item i = i + 1 Next MsgBox ("complete") End Sub 

希望能帮助到你!


更新

您应该分析服务器响应的Json数据,“数据”的值是一个字典。 所以你应该在For Each Loop使用Dictionary。

下面的代码将获得所有的数据,我只是使用“高”键为例。 您可以轻松地将其他键输出到Excel中。

 Public Sub exceljson() Dim https As Object, Json As Object, DataItem As Dictionary, i As Integer Set https = CreateObject("MSXML2.XMLHTTP") https.Open "GET", "https://min-api.cryptocompare.com/data/histominute?fsym=BTC&tsym=USD&limit=60&aggregate=3&e=CCCAGG", False https.Send 'Use this debug command to see the whole response text 'Debug.Print https.responseText Set Json = JsonConverter.ParseJson(https.responseText) i = 2 For Each DataItem In Json("Data") 'Use "high" as example, you can output other key/values Sheets(1).Cells(i, 1).Value = DataItem("high") i = i + 1 Next MsgBox ("complete") End Sub