Excel 尝试将API的响应放入工作表时,过程调用或参数无效(错误5)

Excel 尝试将API的响应放入工作表时,过程调用或参数无效(错误5),excel,vba,api,Excel,Vba,Api,我正试图制作一张excel表格,以获得不同城市的当前温度。我对API完全陌生。我已经设法发送了一个请求并获得了信息。但当我试图把结果写在一张纸上时,我并没有那么成功。代码如下: Sub VBAJson() Dim xml_obj As MSXML2.XMLHTTP60 Set xml_obj = New MSXML2.XMLHTTP60 xml_obj.Open "GET", "the UrltoWeatherAPI", False xml_obj.send Dim weather

我正试图制作一张excel表格,以获得不同城市的当前温度。我对API完全陌生。我已经设法发送了一个请求并获得了信息。但当我试图把结果写在一张纸上时,我并没有那么成功。代码如下:

Sub VBAJson()

Dim xml_obj As MSXML2.XMLHTTP60
Set xml_obj = New MSXML2.XMLHTTP60

xml_obj.Open "GET", "the UrltoWeatherAPI", False


xml_obj.send


Dim weather As Object

Set weather = JsonConverter.ParseJson(xml_obj.responseText)



Dim Visa As Worksheet
Set Visa = Worksheets("Visa")   

Visa.Range("B2") = weather("city")("name")              'this line works
Visa.Range("B3") = weather("list")("0")("main")("temp") 'this gives me the error
                 '           ^      ^       ^
                 '      variant/ variant/  variant/
                 '      string   object/   string
                 '               dictionary


End Sub
第一行起作用,将城市名称放在单元格B2中,第二行给出错误信息。“无效的过程调用或参数(错误5)”有人知道可能是什么问题吗

这是响应的前几行在浏览器中的样子。这些是我在失败的线路中使用的

cod:                 "200"
message:             0
cnt:                 40,
list:
    0:
        dt:          1583442000,
        main:   
            temp:    274.27 
最后看起来是这样的:

city:
    id:              2697703
    name:            "Landvetter"
编辑 我检查了
weather
的内容,它包含五项内容,其中一项的值为
“list”
。当我检查该项时,它包含40个类型为“Variant/Object/Dictionary”的项,其中没有一个有值

40个项目中的每一个都包含7个项目,其中一个是我正在尝试使用的
“main”


这40项似乎是造成问题的原因。在JSON响应中,它们看起来就像“0”、“1”、“2”等等。

如果看不到正在处理的JSON,很难(不可能)说出原因。调试时,请尝试在本地工具窗口中展开
weather
。添加了来自JSON的部分响应。它在浏览器中的外观。是否有帮助?还添加了
天气所包含的信息,并更新了主要问题。“0”是否始终是第一个键?这些链式索引器很难理解,但请尝试使用数字索引而不是字符串键:
weather(“list”)(0)(“main”)(“temp”)
删除引号有效!但不是0,必须从1开始。因此,天气(“列表”)(1)(“主要”)(“临时”)
确实有效!非常感谢。