Fiz esse código para buscar a distancia entre cidades, porém sempre da erro na JSON, já importei a biblioteca JSON, mas mesmo assim erro, aguem poderia me ajudar a identificar o motivo desse erro ou me auxiliar como posso fazer de outra forma.
Planilha:
A origem (colunas A = Cidade e B = Estado ) e o destino (colunas D = Cidade e E = Estado ) são lidos da planilha. (São Paulo, SP - Rio de Janeiro, RJ)
Os resultados das distâncias são escritos na coluna F.
erro que apresenta na coluna F = Erro no JSON
Sub CalcularDistancia()
Dim ws As Worksheet
Dim i As Long
Dim origem As String, destino As String
Dim apiKey As String
Dim url As String
Dim http As Object
Dim JSON As Object
Dim resposta As String
Dim distancia As String
' Configurar a chave da API
apiKey = "minha chave api"
' Configurar a planilha
Set ws = ThisWorkbook.Sheets(1) ' Ajuste para a aba correta, se necessário
' Loop pelas linhas para calcular a distância
For i = 2 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Construir o endereço de origem e destino
origem = ws.Cells(i, "B").Value & ", " & ws.Cells(i, "A").Value
destino = ws.Cells(i, "E").Value & ", " & ws.Cells(i, "D").Value
' Construir a URL da API
url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" & _
Replace(origem, " ", "+") & "&destinations=" & Replace(destino, " ", "+") & _
"&key=" & apiKey
Debug.Print url ' Exibe a URL no console para depuração
' Fazer a chamada HTTP
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
http.Send
' Armazenar a resposta JSON
resposta = http.responseText
Debug.Print resposta ' Exibe o JSON retornado no console para depuração
' Processar a resposta JSON
On Error Resume Next
Set JSON = JsonConverter.ParseJson(resposta) ' Requer o VBA JSON Converter
On Error GoTo 0
If Not JSON Is Nothing Then
On Error Resume Next
If JSON("rows")(1)("elements")(1)("status") = "OK" Then
distancia = JSON("rows")(1)("elements")(1)("distance")("text")
Else
distancia = "Não encontrado"
End If
On Error GoTo 0
Else
distancia = "Erro no JSON"
End If
' Exibir a distância na coluna F
ws.Cells(i, "F").Value = distancia
Next i
MsgBox "Distâncias calculadas!", vbInformation
End Sub