sábado, 5 de diciembre de 2015

Obtener datos externos desde Web

Puede descargar el archivo de Excel siguiente.



En Excel podemos importar datos e información publicada en páginas web utilizando una de las opciones del menú DATOS, denominada Obtener datos Externos desde Web.


Al pulsar sobre esta opción descubriremos que dentro de Excel se encuentra un sencillo navegador Web que nos permitirá ir a la página deseada y obtener de ella la información que necesitamos.

Es más que copiar y pegar, se trata de vincular con los datos de la página web seleccionada y así al pedir a Excel que actualice el vínculo tendremos los datos nuevos, siempre actualizados.

Hoja1

Vamos a importar los datos del IBEX que se encuentran en las páginas del periódico económico Expansión.

En el navegador de Excel ponemos la dirección web de la página del periódico que deseamos importar. La URLes:


Observamos unas marcas de un cuadrado amarillo con unas flechas. Estas marcas nos indican las zonas de la página web que podemos importar. En ocasiones es toda la página, otras veces nos deja importar una zona concreta, por ejemplo una tabla de datos.


En nuestro caso deseamos importar la tabla con las cotizaciones de las empresas del IBEX. Al acercar el cursor a la marca amarilla cambia el color y se torna en verde, marcando con un recuadro azul la zona que se podría importar.


 Al hacer clic con el ratón sobre la marca desaparece la flecha y queda en verde con un símbolo que indica que está seleccionada.


Al pulsar sobre el botón Importar aparece una ventana donde podemos indicar la celda sobre la que importaremos.


Pasan unos segundos y la tabla seleccionada quedará importada a nuestra hoja de cálculo.


Para actualizar debemos pulsar con el botón derecho del ratón sobre la tabla y en el menú contextual elegir la opción denominada "Actualizar". De esta forma si la tabla de cotizaciones bursátiles se actualizara con gran frecuencia y estuviéramos en horario de cotización veríamos como la tabla de nuestra hoja de cálculo se modifica refrescándose con los nuevos datos. Por eso decimos que es más que copiar y pegar. Lo que hace es un vínculo con la página web que hemos seleccionado y se refresca la información cada vez que pedimos que se actualice la información.


Los datos del ejemplo anterior se corresponden con el cierre de la bolsa española a fecha del viernes 4 de diciembre de 2015.

Hoja2


En la segunda hoja hemos importado la tabla del IBEX de la página de Invertia.



Cuando nos sale la ventana en la que podemos indicar la celda en la que deseamos que quede la tabla importada aparece también un botón de propiedades. Al pulsar sobre las propiedades veremos una ventana donde entre otras cosas podemos programar que la tabla importada se actualice cada 60 minutos o el tiempo que establezcamos.


Otra opción interesante consiste en pedir que se actualice la tabla al abrir el documento.

16 comentarios:

  1. Desconocía este truco. Excelente! Gracias!

    ResponderEliminar
  2. no se me actualiza se queda con fecha de abril

    ResponderEliminar
    Respuestas
    1. Hola Benjamin.

      Los datos son del día 4, no del mes 4. Son las cotizaciones de las empresas que forman el IBEX, que es el índice de la bolsa española. Los datos son del viernes 4 de diciembre de 2015.
      Cuando el próximo lunes vuelva a cotizar la bolsa y los datos de la tabla cambien en la web se puede pedir a Excel que actualice y entonces podremos ver los cambios en nuestra hoja de cálculo.
      Por cierto, no todas las páginas web se dejan capturar por parte de Excel.
      Un saludo.

      Eliminar
  3. HOla Adolfo, muchas gracias por el ejemplo, es de gran utilidad, quisiera saber si haz manejado la funcion de Excel "SERVICIOWEB" muchas gracias

    Saludos

    ResponderEliminar
  4. Buenas tardes Adolfo,

    Imagínate que con BBVA quiero crear un gráfico con la cotización que ha ido teniendo cada día y que se me actualice automáticamente. Dado que cada día la celda de la cotización de BBVA va variando, ¿cómo puedo hacer para que los datos de días anteriores no se machaque?

    Saludos y gracias,

    ResponderEliminar
  5. Hola Adolfo buenas tardes:
    Muchas gracias por la explicación tan clara de cómo obtener información de la web, pero requiero de tu apoyo, seguí todos los pasos, yo estoy obteniendo la información de un Excel creado en Google Docs, al momento que se sincroniza Excel para copiar la información, solamente me copia hasta la línea 100, de ahí no logro que me copie más líneas, espero me puedas apoyar con este problema, muchas gracias de antemano, excelente tarde.
    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola Alfredo.
      La hoja de cálculo de Google cuando se inicia únicamente te da 100 filas. Luego, de forma manual puedes añadir muchas más.
      Intenta abrir muchas filas de forma manual y luego intentas la importación. Es posible que ese sea el motivo de la limitación.
      Un cordial saludo.

      Eliminar
    2. Hola buenas tardes Valoro:

      Espero que te encuentres bien, realizando tu recomendación, el problema persiste, añadí las filas que me comentaste, pero el resultado es lo mismo, al momento que mando obtener la información de Excel mediante “obtener datos externos desde web”, me sigue limitando a las 100 líneas solamente, agradezco tu respuesta y apoyo.

      Eliminar
    3. Hola Alfredo.
      He realizado una prueba vinculando una hoja de cálculo de Google Docs (Spreedshet) con un archivo de Excel. La hoja de Google tiene sobre 5000 filas y la ha importando estupendamente Excel, con vínculo.
      Lo he conseguido con la siguiente hoja que he puesto pública:

      https://docs.google.com/spreadsheets/d/1kX8qycNi2-5RxibWg2bo2xSEG5kotFBcsOBWWE4T6Nw/pub?output=xlsx

      En Excel: Datos, Nueva consulta, Desde un archivo, Desde un Libro, y cuando te deja espacio para que digas que libro es debes pegar el anterior enlace.

      Esto lo he realizado en Excel 2016, y ha funcionado bien el vínculo. Para que sea un vínculo en la hoja de cálculo de Google he tenido que decirle: Archivo, Publicar en la web, y elegir como Microsoft Excel (.xlsx), y marcar la casilla de verificación correpondiente a "Volver a publicar automáticamente cuando se realicen cambios"
      Espero que te funcione.
      Un cordial saludo.

      Eliminar
  6. Hola Valoro:

    Espero que te encuentres bien, si me funciono el ejemplo que me pusiste, muchas gracias, ahora tengo otra pregunta, este método lo puedes dejar automatizado, para que Excel este realizando la consulta en determinado lapso de tiempo, como cuando realizas una consulta web, lo que pasa es que tengo un formulario donde usuarios capturan datos, yo realizaba la consulta web para que el usuario final consultara la información en tiempo real, muchas gracias por tu apoyo de antemano.

    ResponderEliminar
    Respuestas
    1. Hola Alfredo.
      Se puede crear una macro que actualice la consulta al pulsar un botón. Con la actualización de tablas dinámicas también se puede conseguir que la consulta se actualize cuando detecta que se han producido cambios, trabajando con programación por eventos. Supongo que se podría lograr algo similar con este tipo de consultas.
      Para tomar alguna idea puedes consultar los dos siguientes post del blog.

      http://www.excelavanzado.com/2011/02/actualizacion-automatica-de-una-td-ante.html

      http://www.excelavanzado.com/2010/03/actualizacion-automatica-de-una-tabla.html

      Espero que con estas ideas logres tu objetivo.
      Un cordial saludo.

      Eliminar
    2. Hola Valoro, buenas tardes:

      Muchas gracias con las ideas que me acabas de dar, voy a ponerlas en práctica, gracias por el apoyo, que tengas una excelente tarde. Saludos.

      Eliminar
  7. Hola Valoro, buenos dias:

    Muy buen material amigo, pero al igual que alfredo leal tengo una duda con respecto a la automatización. Tengo la mitad de mi procedimiento automatizado pero aun no consigo la parte de la conexión.

    La pagina de donde obtengo los datos lleva un login y cada cierto tiempo caduca.

    Manualmente voy a la cinta "Datos" -> "Desde Web" -> Inreso la URL -> me Logueo -> Cierro la ventana Emergente.

    Con eso me basta, puesto que mi método hace todo lo demás, pero como mencionaba anteriormente no puedo automatizar el logueo.

    Tengo un metodo donde puedo loguearme pero solo abriendo una ventana Internet Explorer y excel no vincula mi logueo realizado en dicha ventana.

    En resumidas cuentas mi problematica esta en lo siguiente: ¿Existe alguna macro para iniciar la ventana emergente que arroja el botón "Desde Web"? de no ser así ¿Puedo vincular de alguna forma el loguin que se realizó en InternetExplore con mi libro Excel??

    Cualquier ayuda te la agradeceria enormemente. Estaré muy atento a cualquier comentario.

    Desde ya muchas gracias. Saludos!!

    ResponderEliminar
  8. Esta funcion es buena si los resultados son finitos pero cuando se trata de resultados mas grandes (cerca de 1000 registros) en adelante, la descarga la corta.

    Alguien sabe algun modo de poder descargar o vincular una hoja de excel con la web y esta involucre BIG DATA?

    ResponderEliminar
  9. hola amigos, si me pueden ayudar con algo quisiera que los datos que extraigo se refresquen automáticamente cada segundo, espero me puedan ayudar
    poliejacome@hotmail.com

    ResponderEliminar
  10. Hola amigos, tengo una consulta: ¿Cómo puedo crear una macro en donde me muestre los valores contenidos en una tabla de datos externos desde una base de datos de SQL Server a través de una consulta, en base a un rango de fechas, sin modificar manualmente la consulta desde las propiedades de los datos externos

    ResponderEliminar