Jump to content
cbreason

Conectar VB de Excel (macros) con API de Google Maps

Recommended Posts

Hola amigos.

Mi problema es el siguiente: trabajando en excel mediante macro VBA, pretendo obtener numerosos datos de la Matriz de Distancias y Tiempos de Google Maps, pero -como ya sabréis- existe la limitación de 2.500 consultas al día. He intentado de distintas maneras llevar a cabo más consultas (por encima de ese límite) y no me lo permite, vaya.

Se os ocurre alguna manera para resolver esa restricción ? O incluso contratando los servicios ampliados de la API, cómo utilizarlo desde una macro en VBA de excel ?

Muchas GRACIAS anticipadas por vuestra atención y ayuda.

Share this post


Link to post
Share on other sites

la consulta la realizo a través de ... http://maps.googleapis.com/maps/api/distancematrix/json?origins= ...

Concretamente, de la forma siguiente, en macro de Excel (VBA):

>>>

            firstVal = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="
            secondVal = "&destinations="
            lastVal = "&mode=car&language=en&sensor=false"
            
            Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
            url = firstVal & Replace(start, " ", "+") & secondVal & Replace(dest, " ", "+") & lastVal
            objHTTP.Open "GET", url, False
            objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
            objHTTP.send ("")
            DistanciaAB = -1
            TiempoAB = -1
            
            If InStr(objHTTP.responseText, """distance"" : {") <> 0 Then
                Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = """value"".*?([0-9]+)": regex.Global = False
                Set matches = regex.Execute(objHTTP.responseText)
                tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
                DistanciaAB = tmpVal
            End If
          
            If InStr(objHTTP.responseText, """duration"" : {") <> 0 Then
                Set regex = CreateObject("VBScript.RegExp"): regex.Pattern = "duration(?:.|\n)*?""value"".*?([0-9]+)": regex.Global = False
                Set matches = regex.Execute(objHTTP.responseText)
                tmpVal = Replace(matches(0).SubMatches(0), ".", Application.International(xlListSeparator))
                TiempoAB = tmpVal
             End If

<<<

... y obtengo DistanciaAB y TiempoAB, pero con un número limitado de consultas al día :-(

Se te ocurre alguna alternativa o solución para no tener esa limitación de respuestas ?

MUCHAS GRACIAS

Share this post


Link to post
Share on other sites

Hola tengo entendido que si compras su paquete no tendrías problemas ( $0.50 USD / 1000 additional requests, up to 100,000  daily.), si o si tendrías que crear un proyecto y usar una clave(key) yo he creado una y funciona ahora no se bien como seria el tramite para poder comprar/pagar.

acá tienes la documentación

https://developers.google.com/maps/documentation/directions/usage-limits?hl=es

En cuanto a utilizar  json preferira xml ya que en vba podes usar la herramienta MSXML2.DOMDocument te dejo un ejemplo y como agregas el Api Key (yo la comente porque esa clave es mia)

 

 

gmaps distancia.xlsm

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




  • Posts

    • Me vais a hacer llorar. 😂😂😘😷. Suerte a todos en estos tiempos difíciles.
    • Hola a todos Sin saber cómo recoger mi publicación, la elimino por completo Sigo aqui! Al decir que no tenga en cuenta lo que solicité anteriormente. Como en parte logré resolver el problema yo mismo: Sin embargo, el hecho es que la imagen no es la original, sino que tiene un fondo oscuro, 2) también podría decirme cómo por código puedo una vez que la imagen ha sido presentada en el formulario de usuario Puede eliminar la imagen que está en mi subcarpeta Clasificada como (mImg) o cómo darle un nombre diferente a cada imagen extraída. ¡Todo está aquí! Gracias #################################### Hi everyone Not knowing how to pick up my post I delete it completely I continue here! In saying not to keep in mind what I requested above. As in part I managed to solve the problem myself: However, the fact remains that the image is not the original one, but with a dark background, 2) you could also tell me how by code I can once the image has been presented in the userform Can delete the image that is in my subfolder Classified as (mImg) or how to give it a different name to each extracted image Everything here! Thank you (P.s) Declaro que la imagen cambia solo si el enlace está en (Label3) y ya no hay rastros de la imagen en la subcarpeta ################################ I state that the image changes only if the link is in (Label3) and there is no longer any trace of the image in the subfolder
    • Saludos @manzano Guion x coma 1.1.xlsm
    • Buenas tardes. Consulta lo que estoy intentado hacer es posible desde excel? Saludos.
    • Es un reconocimiento mas que merecido, para alguien como tu @Antoni Que todo vaya bien allá por tu lado, con esta "pandemia"   Saludos 
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy