Categories
programación

Calculadora de rutas en Excel usando Google maps

google_maps_excel_calculator

En el artículo anterior explicaba como acceder a un objeto OLE o ActiveX desde java. En este voy a mostrar un ejemplo de como acceder al objeto OLE “Internet Explorer” desde una macro Excel para navegar a una cierta página y obtener información.

En concreto la página es google maps y la información es relativa a la distancia por carretera entre dos localidades. Para ver el ejemplo solo es necesario invocar a la función de la siguiente forma:

formula

Aquí dejo los ficheros Excel con la función implementada para el que quiera aprender a usar esta funcionalidad o le pueda ser útil la función en si misma:

34 replies on “Calculadora de rutas en Excel usando Google maps”

Lo primero agradecerte el pedazo de archivo. Me va a ser muy útil.

En segundo lugar, y perdona mi ignorancia, me interesa aprender como funciona para añadir nuevas funcionalidades como poder realizar los calculos con el código postal.

¿Como puedo ver el contenido de la función y no sólo el resultado?

Un saludo y gracias de nuevo.
PD. Feliz Navidad

@Jorge, me alegro de que te sea de utilidad. Para ver el código solo tienes que abrir el la ventana de visual basic de excel pulsando Alt+F11
Gracias y feliz navidad a ti también 😀

Hola Sucotronic !!
sabes porque no funciona (ahora > nov 2010 / antes funcionaba perfectamente) la calculadora_distancias_google_maps.xls para Excel 2003 y anteriores.
Google ha cambiado algun parametro? o quizas es problema del IE ?
yo tabajo con Firefox predeterminado como explorador…aunque antes tambien y funcionava excelentemente desde excel.
¿hay algun modo de modificar el codigo, para que funcione de nuevo?
espero que tus conocimientos nos ayuden !!
gracias.
Miguel

@Miguel, resulta que google ha modificado la página y ha cambiado la tag de donde recogía el excel los datos. He hecho una modificación para que coja los datos de la primera ruta que muestra google (ahora siempre le da por mostrar varias) y aparecen algunos datos de más, pero por lo menos funciona y es lo más que puedo hacer por el momento.
Espero que te sea de utilidad 🙂

Buenas,

Estoy intentando conseguir que poniendo dos direcciones en excel, me muestre la distancia de la ruta más corta.

Googleando mucho, me he topado con esta página, que es lo más parecido que he encontrado, pero el resultado que me saca en la celda tiene incluye nº, tiempo, ruta y por fin la distancia, y solo quiero que me saque el dato en km para poder trabajar luego con eso.

El problema es que no tengo conocimientos de programación y no encuentro la manera de modificarlo para obtenerlo.

lo más sencillo es que uses alguna función de excel para extraer la parte de la información que te interese. Por ejemplo, podría usar la función “=DERECHA(F4;6)” (suponiendo que la celda que contiene el resultado de la función de calcular distancia estuviese en la celda F4).

@sucotronic, Sucotronic: Muchas gracias pues recibí tu explicación en noviembre…. Google ha modificado la página y ha cambiado la tag…, y desde entonces, aplicando tus cambios, funcionaba más o menos bien. Yo, con varias formulas de “limpieza”, aislaba, hasta obtener en dos casillas diferenciadas los datos “puros”: Km. y Tiempo de viaje.
Justo ayer estaba preparando, una explicación para Rube a fin de que pudiese limpiar El, sus datos… pero hoy 24.03.11 ya no vuelve a funcionar nada ¿?
Sabes si Google ha cambiado de nuevo la tag? ¿o que puede estar pasando?
Gracias de antemano

Como yo necesitaba el dato de km en limpio para trastear y hacer operaciones al final, como me recomendó sucotronic, tuve que utilizar fórmulas de excel para limpiarlo.

En concreto, mi “monstruosa” fórmula para sacarlo, evitando los errores, ha sido tal que así:

=SI((SUSTITUIR(LIMPIAR(DERECHA(G2;8));” km”;””;1))=” sRuta”;0;(SUSTITUIR(LIMPIAR(DERECHA(G2;8));” km”;””;1)))

Siendo G2 la celda donde tengo el resultado del InfoRuta.

PD: Saque la formulita hace tiempo y no recuerdo todo el proceso mental que me llevo a ella, pero fue para corregir algunos errores.

De todas formas veo que estais diciendo que Google a cambiado algo pero a mi de momento parece que me funciona, no se…

@Miguel, Hola Sucotronic: Ya vuelve a funcionarme. Ahora creo que en Google Maps, no han cambiado nada. Simplemente al tener los mismos síntomas (para mi) que en noviembre, creí que habían vuelto a cambiar la tag.
Creo que debía ser un error interno, de mi libro Excel. Lo curioso es que se ha pasado dos días, sin yo cambiar nada, ahora funciona, ahora no va… ahora el resultado se llena de cuadraditos, ahora va perfecto. ..¿?
En fin, de momento solucionado y gracias por vuestros consejos. Incluida la formula “mostruosa” :), de Rube.

@sucotronic,
Sucotronic , hola de nuevo. 23 abril 2011
Quería preguntarte si sabes como podría conseguir, que de la Tag donde Excel recoge los datos, analizara y me avisase si detecta, la palabra ferry entre el texto de respuesta Google maps.
Por Ejemplo: de Barcelona, Spain a Tenerife, Spain
Ya que teniendo ese dato (que hay “agua de por medio”) mecanizado, en mi panel de control, ese dato cambiaria automáticamente indicaciones muy útiles en mis hojas de ruta.
Gracias de antemano ¡!
Miguel

Ejemplo de texto real respuesta de Google Maps: Barcelona, spain a Tenerife, spain

Esta ruta cruza algún peaje.más datos »Esta ruta incluye un ferry.más datos »

@Miguel, lo mejor es usar la función Buscar de excel: el primero parámetro pasarle la llamada de la función de buscar ruta (o una celda donde está el resultado), y el segundo la palabra que buscas, “ferry”.

@Miguel, Uff!!
Intentare explicarme mejor. Acompaño un archivo Excel para mayor entendimiento. http://db.tt/O8XKwxi

Sucotronic, gracias por tu contestación, pero debido a que no se como modificarlo (por desconocimientos técnicos, dado que mi nivel de Excel es muy bajo), te adjunto un archivo Excel de ejemplo, a fin de que al menos puedas entender mi petición y si sabes como hacerlo, puedieras ayudarme.
Gracias de nuevo por tu tiempo ¡!
Miguel

@Miguel, lo siento, pero ahora mismo no tengo ningún ordenador con windows para probarlo. Intentaré acordarme cuando tenga uno para poder ayudarte.

Hola Sucotronic.
Para empezar muchas gracias por responderme. Es verdad me equivoque de post. Me puse en contacto contigo al ver como sacabas informacion de google maps y la exportabas a exel. Me encantó. Al final pude hacerla cuando comprendi que era cada cosa. No tengo ni idea de VBA y bastante poquito de exel pero aqui me tienes. Tengo muchas dudas y nada me sale, te ruego a ver si me puedes ayudar…, la primera trata sobre tu tutorial de la calculadora de distancias de google maps a exel y sobre este tutotial, te queria preguntar alguna formula que me separe el texto del tiempo menos los km, para dejarme el tiempo (horas-minutos-segundos) despejado y en ese formato, ya que con este dato debo hacer calculos.
La segunda pregunta que no tiene relación se trata de como hacer una consulta dinámica desde una celda, es decir de como programar en VBA una consulta desde una celda y que sea rápida y dinámica, como los campos de google maps para poner origen y dirección. Se me entiende? Yo tengo 10.000 direcciónes y si no lo hago que sea:
una busqueda rapida, inteligente, con desplegable y que se pueda escoger las opciones que nos proporciona; se combierte en una busqueda de locura.
Como en mi diseño, las celdas donde hago las busquedas de origen y destino tienen otros campos debajo, me gustaria que este desplegable que se abre desde esta celda sea flotante y que no borre ni dañe lo qeu hay debajo. ESte desplegable donde van apareciendo las posibilidades dependiendo de lo qeu vamos escribiendo en nuestra celda de origen o destino, me gustaría que tuviese unos límites determinados ya que si no se taparía todo el diseño. Es decir sería algo así como simular el buscador de google maps.
Conseguir los km, ya los consegúi porque salen al principio del texto. Los tiempos, necesito alguna formula para limpiar todo el texto sea el que sea y que me deje solo el tiempo (sacando tambien el dato de km y fijate que aveces salen dos tiempos, uno el normal y otro con los posibles atascos, sería fantastico disponer de este otro en otra celda),que se tarda en formato h:m:s. Y ya sería la leche si pudieses indicarme como sacar el gasto de combustible para cada trayecto con las diferentes opciones que nos ofrece google maps en nuestra tabla y nos la de en una celda, para poder hacer calculos con este dato.
Todo esto es lo qeu pretendo hacer y me estoy volviendo loco. Miro por todos laddos y solo veo cosas que algunas me van bien y otras no se como adaptarlas. Necesito si puedes, que me heches una mano y se que lo que te pido son muchas cosas(siento ser tan inutil en esto). Fijate que voy copiando código y lo voy provando a ver si me funciona.

Espero no te tomes a mal estas peticiones, se que es tiempo y si no puedes ayudarme, no te preocuopes que te lo agradezco como si ya lo hubieses hecho. Igualmente, te mando un saludo y decirte que la calculadora va genial.

Un saludo y muchas gracias
Alberto

[Responder]
May 8th, 2013 at 12:38 pm

@Alberto, uf, pides bastantes cosas. En estos momentos no puedo ayudarte, ya que las funcionalidades que pides por supuesto se pueden hacer en vba, pero no dispongo de tiempo. Te recomiendo que busques algún tutorial de vba, realmente es sencillo hacerte tus propias funciones.

Parece ser que desde la última actualización del google maps ya no funciona. Creo que el problema está en como captura la id.

@Quirino, es posible. De todos modos, ya hace tiempo que no uso excel, así que si algún día lo reparo, probablemente lo haga como macro para libreoffice 😉

hola, ante que todo muchas gracias por el tiempo que te tomas en contestar las dudas.
Te escribo ya que debo realizar un trabajo donde necesito encontrar las distancias entre una oficina y 200 direcciones. Intente usar la planilla que esta mas arriba pero al momento de ingresar las direcciones aparece error en la celda de resultados. Lei algunos comentarios y creo q se trata del “tag” como lo puedo modificar?

Me gustaría poder descargarlo para la versión de Excel 2013, si es posible, ya que no me funciona. Gracias

Buenas!,

en primer lugar muchas gracias por el post, me está siendo muy útil!

Lo único que a mí no me muestra la ruta, simplemente me aparece #!VALOR! (y no he cambiado ningún origen ni destino, me aparece esto con los datos que das de ejemplo.

Por lo que estoy viendo en el código, el problema viene con la sentencia
result = ie.Document.GetElementById(“altroute_0”).InnerText

a partir de la cual no devuelve nada

¿Sabéis a qué puede deberse??

MUCHAS GRACIAS DE ANTEMANO!!

Muy bonito, muchas grácias. Una cosita nada más, en 64bits hace falta “Declare PtrSafe” en las dos macros, por lo menos para que empiece a hacer algo. Luego yo no he logrado que tire, pero que sepas que en 64 bits va a dar guerra

UN SALUDO Y GRACIAS POR EL ARCHIVO

Buenas tardes

Genial este archivo pero igual que otros colegas tengo problemas por que en la ruta me da error #!Valor¡ a veces me funciona y luego me falla que podria ser??

Muy interesante, pero ya no funciona ¿no?
y estoy realmente interesado, podrias volver a colgarlo sin el #!Valor¡

Gracias

Hola a mi no me funciona el excel porque pide una actualización al sistema de 64 bits y actualizar las instrucciones declare y marcarlas con ptrsafe
¿como puedo hacer eso?

Buenas tardes.
Me parece muy util su informacion pero por algun motivo no me aparece en la celda de la informacion de ruta la informacion simplemente me aparece #VALUE!.
Me podria ayudar con este problema.

Leave a Reply

Your email address will not be published. Required fields are marked *