我正在使用下面的链接中的VBA-JSON模块,从那里捕获天气信息的来源已经从每小时列出的7天数据的列表 struct 变成了每天的数组,并且每一天都有另一个小时array.
这是我作为Marco导入到VBA中的模块. https://github.com/VBA-tools/VBA-JSON个
Forecastday and Hour是一个集合对象当使用这个VBA-JSON库进行转换时,我不熟悉VBA...我应该如何纠正for循环中的两行以使数据显示得像附加的图像一样?(这是系统在http源代码更改之前的工作方式)
http://api.weatherapi.com/v1/forecast.json?key=4c6f7219367f4aa5b0c174927231104&q=51.180224,-113.9385224&days=7&aqi=no&alerts=no
Public Sub exceljson()
Dim http As Object, JSON As Object, i As Integer
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "http://api.weatherapi.com/v1/forecast.json?key=4c6f7219367f4aa5b0c174927231104&q=51.180224,-113.9385224&days=7&aqi=no&alerts=no", False
http.Send
Set JSON = JsonConverter.ParseJson(http.responseText)
For i = 4 To 169
Sheets("Setup").Cells(i, 1).Value = JSON("forecast")("forecastday")("hour")(i)("time_epoch")
Sheets("Setup").Cells(i, 2).Value = JSON("forecast")("forecastday")("hour")(i)("temp_c")
Next
End Sub
(expected excel results)
循环中的以下两行是执行时生成错误的地方.
For i = 4 To 169
Sheets("Setup").Cells(i, 1).Value = JSON("forecast")("forecastday")("hour")(i)("time_epoch")
Sheets("Setup").Cells(i, 2).Value = JSON("forecast")("forecastday")("hour")(i)("temp_c")
Next.
但我不确定如何处理嵌套的集合对象.是否应该有(J)和(I)?J代表<;8,代表一周的天数?我读到JSON Converter for VBA会将任何[]值转换为VBA集合对象.
无论我try 什么,要么给出运行时错误5,要么给出运行时错误13.
这是否应该是预期的格式?但它在调试时不被接受.我认为预报日应该在一周内循环7次,然后每一天都应该有一个小时循环,一天中的24小时?不确定如何在VBA中实现这一点.
JSON("forecast")("forecastday")(j)("hour")(i)("temp_c")
请帮帮忙,我该怎么做呢?我将预期结果附加到一个名为"(Expect EXCEL RESULTS)"的图像中,对于一个名为"Setup"的选项卡,从第4行开始的列A记录了纪元时间戳条目,列B是当天的预测温度,每小时预测一次.