jsonconverter.bas有麻烦用VBA Excel解析JSON

时间:2018-09-21 00:57:46

标签: json excel vba parsing

我正在尝试运行以下代码,但出现类型不匹配错误:

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

我不确定两个站点之间有什么区别。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要更仔细地检查JSON的结构。

由于您选择不专门声明Item变量,因此它隐式声明为Variant(在这种情况下可以)。

在您的第一个宏中,ItemString,因此您需要将其作为键引用。

在第二个宏中,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