Ir ao conteúdo

Posts recomendados

Postado

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


 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...