Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

publicado

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.

Featured Replies

publicado
  • Autor

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

publicado

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

  • 2 months later...
  • Enigma25 bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.