Excel 尝试将API的响应放入工作表时,过程调用或参数无效(错误5)
我正试图制作一张excel表格,以获得不同城市的当前温度。我对API完全陌生。我已经设法发送了一个请求并获得了信息。但当我试图把结果写在一张纸上时,我并没有那么成功。代码如下: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
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)(“主要”)(“临时”)
确实有效!非常感谢。