Я использую библиотеку VBA-Web для обработки входящих вызовов JSON в VBA:
https://github.com/VBA-tools/VBA-Web
Вот небольшой пример ответа (только 1 страница):
Вы можете видеть внизу, что возвращается "TotalPages". Ниже приведен мой код VBA:
Set Response = Client.Execute(Request)
RoutineErrors = 0
If Response.StatusCode = WebStatusCode.Ok Then
DoCmd.SetWarnings (WarningsOff)
TotalCount = Response.Data("TotalCount")
For i = 1 To TotalCount
For Each Item In Response.Data("Items")(i)
Select Case Item
Case "ClientId"
ClientId = Response.Data("Items")(i)(Item)
Case "ClientName"
ClientName = Response.Data("Items")(i)(Item)
ClientName = Replace(ClientName, "'", "''")
Case "TalkTimeInSeconds"
TalkTimeInSeconds = Response.Data("Items")(i)(Item)
Case "TransferTimeInSeconds"
TransferTimeInSeconds = Response.Data("Items")(i)(Item)
SQL = "INSERT INTO Call_Counts_Temp (ClientId,ClientName,TalkTimeInSeconds,TransferTimeInSeconds,DurationInSeconds,HoldTimeInSeconds) " & _
"VALUES ('" & ClientId & "','" & ClientName & "','" & TalkTimeInSeconds & "','" & TransferTimeInSeconds & "'" & _
",'" & DurationInSeconds & "','" & TransferTimeInSeconds & "')"
DoCmd.RunSQL SQL
Case "DurationInSeconds"
DurationInSeconds = Response.Data("Items")(i)(Item)
Case "HoldTimeInSeconds"
HoldTimeInSeconds = Response.Data("Items")(i)(Item)
End Select
Next
Next
End If
При i = 26 ошибок процесса:
Ошибка времени выполнения '9':
Индекс вне диапазона
Полагаю, именно тогда цикл переходит на страницу 2. Есть идеи, как написать код для этого? Это первый раз, когда я работал с вызовом JSON, поэтому я предполагаю, что способ написания моего кода в любом случае не очень эффективен. Спасибо!