我正在尝试运行以下代码,但出现类型不匹配错误:
Public Sub exceljson()
Dim http As Object, JSON As Object, i As Integer
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://wex.nz/api/3/ticker/btc_usd-ltc_usd", False
http.Send
Set JSON = ParseJson(http.responseText)
i = 2
For Each Item In JSON
Sheets(1).Cells(i, 2).Value = Item("high")
Sheets(1).Cells(i, 3).Value = Item("low")
i = i + 1
Next
MsgBox ("complete")
End Sub
以下示例代码在我使用时可以正常工作:
Public Sub exceljson()
Dim http As Object, JSON As Object, i As Integer
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "http://jsonplaceholder.typicode.com/users", False
http.Send
Set JSON = ParseJson(http.responseText)
i = 2
For Each Item In JSON
Sheets(1).Cells(i, 1).Value = Item("id")
Sheets(1).Cells(i, 2).Value = Item("name")
Sheets(1).Cells(i, 3).Value = Item("username")
Sheets(1).Cells(i, 4).Value = Item("email")
Sheets(1).Cells(i, 5).Value = Item("address")("city")
Sheets(1).Cells(i, 6).Value = Item("phone")
Sheets(1).Cells(i, 7).Value = Item("website")
Sheets(1).Cells(i, 8).Value = Item("company")("name")
i = i + 1
Next
MsgBox ("complete")
End Sub
我不确定两个站点之间有什么区别。任何帮助将不胜感激。
答案 0 :(得分:0)
您需要更仔细地检查JSON的结构。
由于您选择不专门声明Item
变量,因此它隐式声明为Variant
(在这种情况下可以)。
在您的第一个宏中,Item
是String
,因此您需要将其作为键引用。
在第二个宏中,Item
将是一个Dictionary
对象,因此您可以像以前一样引用它。
因此,在您的第一个宏中,您需要以下内容:
For Each Item In JSON
Sheets(1).Cells(i, 2).Value = JSON(Item)("high")
Sheets(1).Cells(i, 3).Value = JSON(Item)("low")
i = i + 1
Next