obtener datos de una página web _ hojas de cálculo excel

9
11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel http://www.hojasdecalculoexcel.com/2009/09/obtenerdatosdeunapaginaweb.html 1/9 3 Buscar en el blog Obtener datos de una página web La utilidad que hoy os presento me gusta especialmente, porque nos puede ahorrar muchas visitas a determinadas páginas de internet que habitualmente consultamos para obtener algún dato. Desde nuestra siempre socorrida hoja de cálculo Excel, vamos a ser capaces de controlar lo que pasa en la red, sin necesidad de abrir ni tan siquiera, nuestro navegador. Con un clic en nuestra hoja de cálculo, recogeremos esa información de las diversas fuentes que nos interesan. Incluso nos podemos ahorrar ese clic, si el macro que contenga el código para obtener los datos que nos interesan de una web, se llama Auto_open(), o si lo grabamos en el evento Open de nuestro libro de trabajo. Pero vamos a ver que es eso tan interesante, que podemos obtener de una página web... ¿Cuántas veces has necesitado obtener la cotización en ese mismo instante, del dólar, del yen, o de la libra esterlina, y te has tenido que buscar la vida navegando por diferentes webs, hasta que has dado con una que tenía la información que buscabas?. ¿O quizás eres inversor, y te interesa obtener los datos de algunos o todos los valores del IBEX 35, del NASDAQ 100, del EUROSTOXX 50, o de cualquier otro índice bursátil, para poder operar con esos datos en tu hoja de cálculo, y poder efectuar tus análisis?. ¿O quizás estás planificando tu agenda, y te interesa saber que tiempo va a hacer mañana, y sabes que tal o cual web, publica periódicamente en su página esas previsiones?. En todos estos casos, y en muchísimos más que puedas imaginar, nos va a ser útil el macro que hoy os presento. Trataremos de averiguar ese dato que tanto nos interesa, de una página web determinada, sin abrir el navegador, y sin entrar en esa web, aunque evidentemente, necesitaremos tener una conexión a internet. El dato que nos interesa, lo escribiremos en una celda de nuestra hoja de cálculo. ¿Te parece increíble?. Pues que sepas que con un macro como este, vas a poder lucirte delante de tus compañeros de trabajo, e incluso delante tu jefe. Aprovecha para pedirle un aumento de sueldo ;) Vamos a ver todo esto con un sencillo ejemplo. Trataremos de averiguar cual es la última cotización disponible del dólar frente al euro. Lo primero que necesitaremos es saber de qué fuente vamos a recoger esa información, es decir, de que sitio web. Podemos obtener esa información de cualquier entidad financiera, del banco central de cada país, de cualquier agencia o sociedad de valores y bolsa, y de muchas webs especializadas en temas económicos y financieros. Para ilustrar este ejemplo, he seleccionado como fuente de información, la web www.finanzas.com. Concretamente la información que nos interesa, la tenemos en esta página: http://www.finanzas.com/divisas/usdeur/ El aspecto que presenta la página a día 07/06/2012, fecha en la que he actualizado este artículo, es este que os presento a continuación. Si os fijáis, he marcado con una flecha lo que buscaremos: Hojas de cálculo excel Si la información que has encontrado en este blog ha sido de tu interés, te agradecería que dejases un comentario ;) Artículos publicados 130 artículos publicados • ¿En qué columnas tenemos los datos que buscamos? • Obtener un consolidado, extrayendo los datos de diferentes ficheros • Obtener valores únicos en Excel • Plantillas Excel • 33 Utilidades para Microsoft Excel • Calendario emergente en Excel • Controlar vencimientos de facturas y recibos, con descuento comercial • Buscar valores en un rango de datos • Mostrar imágenes en un formulario • Medias ponderadas • Incluir un calendario en un formulario • Calcular vencimientos • Controlar vencimientos de facturas y recibos • Préstamos según el método americano • Préstamos con amortización de capital constante • Calcular el VAN, para periodos irregulares • Calculadora de tiempos • Habilitar y deshabilitar controles de un formulario • La hoja de cálculo Anuncios Google ► PDF ► Excel ► PDF to Excel ► Paginas web HTML Anuncios Google ► Diseño web HTML ► Abrir pagina web ► Macros en Excel

Upload: rdonaire86

Post on 11-Jul-2016

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Obtener Datos de Una Página Web _ Hojas de Cálculo Excel

11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel

http://www.hojasdecalculoexcel.com/2009/09/obtener­datos­de­una­pagina­web.html 1/9

3 Buscar en el blog

Obtener datos de una página webLa utilidad que hoy os presento me gusta especialmente, porquenos puede ahorrar muchas visitas a determinadas páginas deinternet que habitualmente consultamos para obtener algún dato.Desde nuestra siempre socorrida hoja de cálculo Excel, vamos aser capaces de controlar lo que pasa en la red, sin necesidad deabrir ni tan siquiera, nuestro navegador.

Con un clic en nuestra hoja de cálculo, recogeremos esainformación de las diversas fuentes que nos interesan. Inclusonos podemos ahorrar ese clic, si el macro que contenga el códigopara obtener los datos que nos interesan de una web, se llamaAuto_open(), o si lo grabamos en el evento Open de nuestrolibro de trabajo.

Pero vamos a ver que es eso tan interesante, que podemosobtener de una página web...

¿Cuántas veces has necesitado obtener la cotización en ese mismo instante, del dólar, del yen, o de la libra esterlina, y te hastenido que buscar la vida navegando por diferentes webs, hasta que has dado con una que tenía la información que buscabas?.¿O quizás eres inversor, y te interesa obtener los datos de algunos o todos los valores del IBEX 35, del NASDAQ 100, delEUROSTOXX 50, o de cualquier otro índice bursátil, para poder operar con esos datos en tu hoja de cálculo, y poder efectuartus análisis?. ¿O quizás estás planificando tu agenda, y te interesa saber que tiempo va a hacer mañana, y sabes que tal o cualweb, publica periódicamente en su página esas previsiones?.

En todos estos casos, y en muchísimos más que puedas imaginar, nos va a ser útil el macro que hoy os presento. Trataremosde averiguar ese dato que tanto nos interesa, de una página web determinada, sin abrir el navegador, y sin entrar en esa web,aunque evidentemente, necesitaremos tener una conexión a internet. El dato que nos interesa, lo escribiremos en una celda denuestra hoja de cálculo. ¿Te parece increíble?. Pues que sepas que con un macro como este, vas a poder lucirte delante de tuscompañeros de trabajo, e incluso delante tu jefe. Aprovecha para pedirle un aumento de sueldo ;­)

Vamos a ver todo esto con un sencillo ejemplo. Trataremos de averiguar cual es la última cotización disponible del dólar frenteal euro. Lo primero que necesitaremos es saber de qué fuente vamos a recoger esa información, es decir, de que sitio web.Podemos obtener esa información de cualquier entidad financiera, del banco central de cada país, de cualquier agencia osociedad de valores y bolsa, y de muchas webs especializadas en temas económicos y financieros. Para ilustrar este ejemplo,he seleccionado como fuente de información, la web www.finanzas.com. Concretamente la información que nos interesa, latenemos en esta página:

http://www.finanzas.com/divisas/usd­eur/

El aspecto que presenta la página a día 07/06/2012, fecha en la que he actualizado este artículo, es este que os presento acontinuación. Si os fijáis, he marcado con una flecha lo que buscaremos:

Hojas de cálculo excel

Si la información que has encontradoen este blog ha sido de tu interés, teagradecería que dejases uncomentario ;­)

Artículos publicados

130 artículos publicados

• ¿En qué columnas tenemos los datosque buscamos?• Obtener un consolidado, extrayendo losdatos de diferentes ficheros• Obtener valores únicos en Excel• Plantillas Excel• 33 Utilidades para Microsoft Excel• Calendario emergente en Excel• Controlar vencimientos de facturas yrecibos, con descuento comercial• Buscar valores en un rango de datos• Mostrar imágenes en un formulario• Medias ponderadas• Incluir un calendario en un formulario• Calcular vencimientos• Controlar vencimientos de facturas yrecibos• Préstamos según el método americano• Préstamos con amortización de capitalconstante• Calcular el VAN, para periodosirregulares• Calculadora de tiempos• Habilitar y deshabilitar controles de unformulario• La hoja de cálculo

Anuncios Google PDF Excel PDF to Excel Paginas web HTML

Anuncios Google

Diseño web HTML Abrir pagina web Macros en Excel

Page 2: Obtener Datos de Una Página Web _ Hojas de Cálculo Excel

11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel

http://www.hojasdecalculoexcel.com/2009/09/obtener­datos­de­una­pagina­web.html 2/9

Si miramos el código fuente, veremos esto (ojo, que la cotización será otra, si miráis el código fuente de esa página, pues varíaconstantemente):

¿Cómo vamos a obtener esa información?. Pues de una forma relativamente sencilla. A través del objeto XMLHTTP, lo queharemos será abrir esa página web, pero no como la ve un usuario, sino como la ve un buscador, o incluso un webmaster quedesarrolla el diseño y la programación de una página web, es decir, "leyendo" su código fuente. El código fuente de una páginaweb, lo podéis ver desde vuestro navegador favorito (Internet Explorer, Firefox, Chrome, Opera, Safari, etc.), seleccionando enel menú "Ver", la opción "Código fuente", o "Código fuente de la página", o cualquier otra opción similar, dependiendo delnavegador que hayamos elegido.

Pues bien, lo que haremos será leer el código fuente de la página que hayamos elegido, y miraremos que es lo que hay delantey detrás de la información que estamos buscando. Siempre podremos elegir un patrón por el cual guiarnos. Por ejemplo, en elcaso que nos ocupa, donde vamos a obtener la cotización del dólar frente al euro, si miramos el código fuente de la página queos he puesto más arriba, veremos que delante de la hora de cotización de dólar, aparece este código (técnicamente, dentro delcódigo fuente, lo que hay entre el signo "<" y ">", se denomina "etiqueta html"):

<div class="values­right"><time>

Si nos fijamos bien, ese código solo aparece delante de hora de la cotización del dólar, y en ningún otro sitio más de esapágina web. También observaremos que detrás de la hora, nos aparece este otro código:

<article class="datos­divisa indices_bursatiles">

Como en el caso anterior, ese código, solo aparece una vez en la página web, y justo detrás del dato que necesitamos.

Pues bien, lo que haremos será determinar en qué posición se encuentran ambos códigos, dentro del texto de la página, esdecir, si el texto de la página tiene 50.000 caracteres, obtendremos la posición de esos dos códigos que delimitan el dato quedeseamos obtener (la hora y cotización del dólar), de tal forma que el primer código puede estar en la posición 30.245, y elsegundo, en la posición 30.277 (en ambos casos, me he inventado la posición que ocupan esos códigos, pues pueden ser otrosdistintos).

Una vez hecho eso, obtendremos todo el texto que haya entre ambas posiciones, es decir, suponiendo que la posición en quese encuentran esos códigos sea la que he puesto en el párrafo anterior, lo que haremos será buscar el texto que hay entre elcarácter 30.245 y el 30.277.

Una vez hecho eso, es evidente que dentro de ese texto estará el dato de la hora y de la cotización del dólar, pero con másinformación que no necesitamos (recordemos que el código inicial y final, delimitaban el dato que necesitamos, es decir, lacotización del dólar). Pues lo que haremos ahora será obtener la cotización separando ese texto en otros más pequeños(utilizaremos la función Split), para lo cual buscaremos un carácter que nos sirva como delimitador. En este caso será estecódigo, que está entre la hora y la cotización:

</time><span>

Como podéis ver, esos dos datos están rodeados de texto que no nos interesa, así que lo que haremos será separar ese textoen otros textos más pequeños. Lo haremos con la función Split, como comentaba anteriormente, y lo que haremos será separarel texto en dos bloques. Lo separaremos así:

Bloque 1: <div class="values­right"><time>XXXXXXXXBloque 2: XXXXXXX</span></div></div></div>

Si os fijáis, ambos bloques se separan por "</time><span>"

Lo siguiente que haremos será quedarnos con el bloque 1, que es el que nos interesa para saber la hora de la cotización, peroantes le quitaremos todo el código innecesario de delante, con la función reemplazar, en la que quitaremos (o mejor dicho,sustituiremos por nada) esto:

<div class="values­right"><time>

Una vez hecho eso, lo que tendremos que hacer es obtener la cotización, para lo cual nos quedaremos con los 6 primeroscaracteres que hay detrás del delimitador </time><span>

Ahora ya tendremos los datos que necesitamos, es decir, en el bloque 1, solo nos quedará la hora y en el bloque 2 la cotizacióndel dólar frente al euro.

Como habéis visto, no es demasiado complicado. Lo único que hay que hacer, es buscar un patrón de comportamiento. Ennuestro caso, hemos buscado un texto que solo aparecía delante y detrás de la cotización, para saber que lo que había en

• Calcular la TAE• Calcular la TIR de una inversión, paraperiodos irregulares• Préstamos y cálculo de hipotecas• Modificar datos, utilizando unformulario• Protegiendo nuestros trabajos en Excel• Introducir datos usando un formulario• Calendarios para imprimir• Enviar un email desde Excel• Ejecutar una macro a una horadeterminada• Obtener datos de una página web• Ejecutar macro al seleccionar unelemento de un combobox• Espacio libre y espacio total en disco• Validar la entrada de datos en unformulario• Ejecutar varias macros a la vez• Forzar la escritura en mayúsculas (ominúsculas)• Números aleatorios no repetidos• Fecha de creación, modificación,último acceso, y peso en Kb de unfichero• Leer otro fichero excel• Formularios dinámicos• Calcular la TIR y el VAN• Buscar hojas ocultas• Informar de que está ejecutándose unmacro• Obtener el nombre del PC• Leer las tablas de una base de datosAccess• Compactar una base de datos Access,desde Excel• Ejecutar un macro al cambiar unacelda• Importar datos concretos de un ficherode texto• Combinar correspondencia con Excel yWord• Calcular el vencimiento real de facturas• Ponerle un nombre a las celdas• Combobox: sacándoles provecho• Usuarios, hojas, y permisos• Asociar un macro a un botón• Solver: cálculo de la TIR• Combobox dependientes• Horas de 100 minutos, y conversión deunidades de tiempo• Impedir que se cambie el nombre a unahoja• Evolución de un capital a interéssimple e interés compuesto• Euroconversor• Listar los archivos de un directorio• Convertir unidades de tiempo a formatohh:mm:ss• Calcular el umbral de rentabilidad, conexcel• Llenar dinámicamente un combobox• Control horario: horas normales, yhoras extras• HP iPaq 614C, con excel en el bolsillo• Mostrar y ocultar hojas, utilizandomacros• Controlar los cambios en ficheroscompartidos• Mostrar imágenes asociadas a undesplegable• Validación de listas dependientes• Saber si existe un fichero• Convertir unidades de tiempo: horas,minutos, y segundos• Validación con datos en otra hoja• Crear un gráfico, con un macro• Mi primer Combobox• El libro PERSONAL.XLS (XLSB)• Formularios inteligentes• Más sobre las funciones de bases dedatos personalizadas• Funciones de bases de datospersonalizadas• Volviendo con los números aleatorios• Sencilla aplicación en excel

Page 3: Obtener Datos de Una Página Web _ Hojas de Cálculo Excel

11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel

http://www.hojasdecalculoexcel.com/2009/09/obtener­datos­de­una­pagina­web.html 3/9

medio, era el dato que necesitábamos.

Aparte de la cotización y la hora, lo que haremos será poner un enlace a la página web de la que hemos obtenido esainformación.

Solo tienes que tener en cuenta que es probable que la web de origen cambie algún día (las webs cambian periódicamente deformato, de presentación, de contenidos, etc.), y por tanto debas revisar este código, para readaptarlo a la nueva ubicación dela cotización del dólar, si es que han cambiado ese dato de página, o lo han colocado en otro sitio de esa misma página y estárodeado de otras etiquetas html distintas a las que hemos visto aquí. De hecho, este artículo que estás leyendo, lo he revisadoy actualizado precisamente porque la página web origen de los datos, ha sido modificada (fecha de actualización: 07/06/2012).

El macro que resume todo lo explicado en este artículo es este:

Sub Cotizacion_del_dolar()'Ocultamos el procedimientoApplication.ScreenUpdating = False'Si hay errores, que continúeOn Error Resume Next'pasamos a una variable, la página de la'que vamos a sacar la informaciónweb = "http://www.finanzas.com/divisas/usd­eur/"'pasamos la parte que rodea al texto'que nos interesa, a variablesprincipio = "<div class=""values­right""><time>"final = "<article class=""datos­divisa indices_bursatiles"">"'creamos el objeto xmlhttpSet xml = CreateObject("Microsoft.XMLHTTP")'accedemos a la página webxml.Open "POST", web, False'mandamos el contenidoxml.Send'pasamos el contenido a una variabletexto = xml.responseText'miramos en que nº de carácter aparecen los textos'que envuelven la información que necesitamos.'Primero con la posición inicialposicion1 = InStr(texto, principio)'ahora con la posición finalposicion2 = InStr(texto, final)'recuperamos el texto que hay entre esas dos posicionesdato = Mid(texto, posicion1, (posicion2 ­ posicion1))'si no hay errores, que haga lo que tiene que hacerIf Err = 0 Then'creamos un array separando los elementos'por el caracter "</time><span>"cotizacion = Split(dato, "</time><span>")'ahora se nos habrán formado 2 elementos separados por "</time><span>",'pero quitaremos el "<div class="values­right"><time>" del principio,'para obtener la horacotizacion(0) = Replace(cotizacion(0), "<div class=""values­right""><time>", "")'y ahora para poner solo la cotización, por lo que solo'nos servirán los 6 primeros dígitos: X,XXXXcotizacion(1) = Left(cotizacion(1), 6)'Escribimos el datoRange("B9") = "Cotización del dólar:"Range("C9") = CSng(cotizacion(1))Range("D9") = "euros = 1 dólar"'convertimos las unidades a dólar/euroRange("C10") = CSng(1 / Range("C9"))'mostramos 4 decimalesSelection.NumberFormat = "#,##0.0000"Range("D10") = "dólares = 1 euro"'ahora cogemos los datos de la hora'y le damos formato de fechaRange("C12").NumberFormat = "dd/mm/yyyy"Range("B12") = "Hora:"Range("C12") = cotizacion(0)'le damos formato de horaRange("C12").NumberFormat = "hh:mm"'si hay errores, mostramos un mensajeElseRange("B9") = "Cotización del dólar:"Range("C9") = "Imposible obtener la cotización"End If'imprimimos la ruta de la fuente desde'la que obtenemos la informaciónRange("B7") = "Fuente:"ActiveSheet.Hyperlinks.Add Anchor:=Range("C7"), Address:=web'limpiamos el objetoSet xml = Nothing'Mostramos el procedimientoApplication.ScreenUpdating = TrueEnd Sub

Aquí os dejo un pantallazo de lo que conseguiremos con un simple clic, sin necesidad de abrir nuestro navegador para buscar lainformación en internet:

• Leer el número de serie de los discos• Trabajando con horas, minutos, ysegundos• Ocultar filas y columnas, mediantemacros• Simultanear filas de colores• Leer una base de datos Access• Calcular la letra del NIF/DNI• Leer un fichero de texto plano• Desplazarse por las hojas, utilizandomacros• Impedir que se cambie el nombre alfichero• Uso de la función BDContar• Mostrar un mensaje en la barra deestado• Eliminar filas vacías• Crear hojas con un clic• Grabar datos en un fichero de texto• Tiempo transcurrido entre dos fechas• Omitir los avisos al ejecutar un macro• Mi primer UserForm• Números de colores• Poner la hora en una celda• Pasar a mayúsculas o minúsculas• Creando nuestro propio buscador• Extraer la inicial de cada palabra• Ocultar hojas para que no se vean• Contar las hojas de un libro• Nombre del día• Proteger un libro de excel• Proteger y desproteger una hoja decálculo, sin macros• Impedir que se cierre excel• Contar palabras• Introducir números pares• Introducir valores únicos (no repetidos)• Macro al abrir o al cerrar un libro• Ir a una celda, de forma aleatoria• Volver donde estábamos inicialmente• Impedir que se cierre un formulario• Evitar la cancelación de un macro• Número aleatorio, con efectotragaperras• Proteger y desproteger con macros• Verificar si existe hoja de cálculo• Recorrer fila a fila• Obtener ruta, nombre del fichero, y hoja• Obtener nombre de la hoja• Macros sin refresco de pantalla• Mi primer macro en excel• Obtener nombre del fichero• Crear carpetas desde excel• Separar cadenas de texto• Desproteger hoja de cálculo• Contar el número de caracteres• Mostrar la fecha de hoy• Presentación del blog

Page 4: Obtener Datos de Una Página Web _ Hojas de Cálculo Excel

11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel

http://www.hojasdecalculoexcel.com/2009/09/obtener­datos­de­una­pagina­web.html 4/9

Desde aquí podéis descargar el fichero, con el ejemplo que hemos visto en este artículo (fichero resubido el 07/06/2012, yartículo actualizado).

37 comentarios:

Pollander dijo...Este blog es simplemente excelente!! No hay entrada que no me resulte de utilidad. Muchas Gracias!! Ahora bien, mepregunto si hay alguna posibildad de que la información que se vierta en un textbox sea volcada a un cuadro de texto enparticular.Otra cosa que me interesaría saber es si se puede envíar la informacíon de un textbox a un lugar específico de unarchivo word.Muchas Gracias de nuevo!25 de septiembre de 2009, 22:45

Pollander dijo...Javier. Estuve probando y ya lográ lo que pedía en el mensaje anterior!!!. Ahora solo me falta poder ajustar el espacioentre caracteres en el cuadro de texto.Gracias26 de septiembre de 2009, 17:57

Luis dijo...Felicidades por este blog me ha sacado de mucho apuros ;)

tengo curiosidad si se puede mandar a la pagina web un dato a un formulario en linea y me regrese la información

gracias de antemano

y en offtopic

tengo una macro que copia y pega datos de una hoja a otra acomodándolos de la forma que quiero pero se repite hastaaprox 180 veces y me marca error de automatización y se traba excel solo puedo guardar el avance y al volverlo abrirpuedo seguir ejecutando la macro otras 180 veces por mas que he buscado no se como evitar eso alguna idea. Gracias de antemano13 de octubre de 2009, 6:41

Aalvarez dijo...Javier

More info

Save $68,985 Off MSRP.Limited Time Offer.Schedule a Test DriveToday!

2015 Bentley Flying Spur V8

miércoles, 23 de septiembre de 2009 Publicado por Javier Marco

Etiquetas: excel avanzado macros en excel

3

Page 5: Obtener Datos de Una Página Web _ Hojas de Cálculo Excel

11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel

http://www.hojasdecalculoexcel.com/2009/09/obtener­datos­de­una­pagina­web.html 5/9

Nuevamente molestandote, estube revisando esta macro, como obtener datos de una pagina web, Mi pregunta es lasiguiente, en algunas paginas exsiste una base de datos (Cadena Hotelera), donde estan los datos del Hotel; direccion ytelefonos, en algunos casos el contacto, Actualmente esto lo hago Copiando y pegando dicha informacion, como lopuedo hacer mas rapido o sencillo.

Saludos6 de noviembre de 2009, 18:30

Leonardo Javier dijo...Muy buen blog! Me ha sido de gran utilidad todo lo que he leido.Ahora pregunto... quisiera saber como hacer para que en un label que diga por ejemplo "mi sitio", al abrir el userform yhacerle click al label me lleve a mi www.misitio.com. Desde ya, muchas gracias.9 de noviembre de 2009, 9:49

APerfects dijo...Este blog es excelente!, lo de recuperar datos de una pagina web es excepcional.

No se si tal vez podrías poner un sobre rellenar datos a una página web con datos que se tiene en una hoja de cálculo,ejemplo: en esta pagina web es de la sunat (perú)

https://www.sunat.gob.pe/cl­at­itmenu/menuS01Alias

y cada mes ingreso los datos de los clientes que son como 200 (Ruc, usuario, clave) para hacer la declaración. si estosdatos ya lo tengo en una hoja de excel, existe una forma mediante macros para hacer esta tarea. GRACIAS7 de enero de 2010, 23:36

gusmero dijo...Hola... soy Gustavo

De antemano muchas gracias...Es Fantástico éste sitio. Mira me gustaría saber si es posible mediante un código en vba asignarle una página a un labelen un UserForm, es decir por ejemplo en un UserForm, tengo un label que dice pagina web del autor, entonces lo quequiero hacer es que al darle click me abra la pagina de internet vinculada.

Gracias nuevamente...20 de febrero de 2010, 1:49

Anónimo dijo...Hola Javier,

He descubierto hace poco este blog y lo primero felicitarte por lo bueno y util que es .

Queria saber si es posible obtener el codigo fuente de mi banca on line una vez conectado con mis claves. Es decir siusando este codigo de visual basic podría tener en tiempo real el saldo de mi cuenta bancaria sin tener que cada vezentrar en la web del banco y meter las claves.

Muchas Gracias y de nuevo enhorabuena.20 de mayo de 2010, 14:04

alejandro dijo...Este blog es buenisimo he estado tratando de hacer algo parecido pero no me ha ido bien yo lo que quiero es usar untraductor osea una pagina para traducir pero el problema es que primero tengo que mandar o copiar una palabra queeste en alguna celda de excel en el traductor o pag para tarducir y despues recoger la informacion que me manda yponerla en una celda de excel pero no me ha ido bien si alguien tiene alguna ayuda lo agradecere mucho26 de mayo de 2010, 20:31

peterHammer dijo...Antes que nada lo quiero felicitar por subir este post extremadamente util.

Sin embargo, encontre un error que comete Excel al tomar el cuerpo de la pagina web. El mismo esta limitado a 255caracteres segun Microsoft, pero son 248 en realidad.

Te has topado con este problema? Has podido solucionarlo?

Dejo mi correo por las dudas:

[email protected]

Desde ya muchas gracias.

Saludos,Federico17 de junio de 2010, 3:05

Javier Marco dijo...peterHammer, échale un vistazo a este artículo: http://support.microsoft.com/kb/211580/es

También puedes limitar el número de caracteres que recuperes de la página web de una forma sencilla, tal y como temuestro en este ejemplo:

Page 6: Obtener Datos de Una Página Web _ Hojas de Cálculo Excel

11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel

http://www.hojasdecalculoexcel.com/2009/09/obtener­datos­de­una­pagina­web.html 6/9

Sub ejemplo()'creamos una variablevariable = "Este texto tiene 30 caracteres"'mostramos solo los primeros 20 caracteresvariable = Left(variable, 20)MsgBox (variable)End Sub17 de junio de 2010, 10:07

peterHammer dijo...Muchas gracias Javier Marco. El link de Microsoft no fue de mucha ayuda, pero tu comentario sin duda si lo fue. Pareceque si haces un Mid del "xml.responseText" si te puede responder caracteres pasando los primeros 255. Por ejemplo:texto = Mid(xml.responseText,20600,255).

Parece una locura pero de otra forma es imposible trabajar con paginas grandes.

Muchas gracias por la ayuda y tu tiempo.

Cordiales saludos,Federico.17 de junio de 2010, 15:32

J.Ll.Adserà dijo...un post fantastico, util y ameno; felicidades al autor!26 de agosto de 2010, 18:00

J.Ll.Adserà dijo...como se puede hacer al reves...los datos que quiero capturar estan dentro de una pagina web que tiene logig con usuario y password (los cuales tengo)pero con este metodo no me permite entrar dentro de la web aun que haya abierto la sesion con cualquier navegador.como se puede enviar datos en una pagina? y de paso ¿como podemos hacer clic? todo esto des de macros de excelclaro estagracias30 de agosto de 2010, 16:14

Carlos dijo...Hola que tal, yo estoy queriendo hacer los mismo, pero para consultar parametros de una maquina, la verdad no semucho de esto, solo se que estos datos viene mediante una tabla, como puedo publicar ese codigo en estoscomentarios, ayudenme porfaaa!!8 de septiembre de 2010, 17:55

coticlub dijo...Hola, enhorabuena por el post. Estoy intentando utilizar tu método pero no me funciona, y me asaltan las siguientesdudas:¿Dónde utilizas el nº de caracter? no lo veo en el código po ninguna parte¿En el caso que yo quiera el texto completo que hay entre las dos posiciones, basta con eliminar el split???

Mucha gracias por tus aportes18 de enero de 2011, 13:52

Martin dijo...Hola Javier Marco,Muy bien pensada la solucion. Me interesaria poder contar con algo similar pero que extraiga de un catalogo web losprecios y los pueda reflejar en un hoja de excel. La idea seria similar a lo planteado aqui pero los datos a extraer serepiten o bien en varias paginas con el id del producto o bien se pueden extraer de manera multiple de un listado porcategorias. Como forma parte de un pequeño proyecto comercial, podrias hacernos un presupuesto por el trabajo?Muchas gracias.18 de enero de 2011, 14:44

Javier Marco dijo...Para coticlub:

Fíjate que recuperamos los caracteres donde empieza y finaliza el texto que queremos recuperar (antes de depurarlo), ylo pasamos a 2 variables:

posicion1 = InStr(texto, principio)posicion2 = InStr(texto, final)

Un par de líneas más abajo recuperamos el dato en cuestión de esta forma:

dato = Mid(texto, posicion1, (posicion2 ­ posicion1))

Puedes recuperar todo el texto que quieras, aunque es probable que tengas la limitación de no poder escribir más de255 caracteres por celda. Para ello, mírate los comentarios anteriores.

Para Martin:

Sería más laborioso el trabajo de recuperar esos datos de la web, que lo que pudiera cobrar por el mismo. Por ese

Page 7: Obtener Datos de Una Página Web _ Hojas de Cálculo Excel

11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel

http://www.hojasdecalculoexcel.com/2009/09/obtener­datos­de­una­pagina­web.html 7/9

motivo prefiero no hacer trabajos por encargo. No obstante, en el ejemplo del blog tienes información suficiente paramontarte un macro y poder recuperar esa información de la web. ¿Problema?. El día que cambie el diseño de la web (oaunque no sea diseño, que cambién algo por poco que sea), te afectará al macro, y deberás revisarlo para arreglarlo.

Un saludo.18 de enero de 2011, 15:43

Miguel dijo...Hola Javier. te acompaño un link a mi archivo Excel para mayor entendimiento de mi exposición. http://db.tt/O8XKwxi sisabes como hacerlo y pudieras ayudarme, te lo agradecería.Muchas gracias por tu dedicación ¡!Miguel

Resumidamente, se trata de localizar, tras realizar una petición de distancias kilométricas entre ciudades, desde Excel aGoogle Maps, si existe la palabra ferry dentro del código fuente de la respuesta. Sabiendo que según petición //ejemplos: Barcelona > Madrid ó Barcelona > Tenerife // aparecerá o no la palabra < ferry > dentro dicho código. Ese dato“limpio”, dará a mi plantilla una serie de necesarias prestaciones internas.Gracias de nuevo. miguel29 de abril de 2011, 11:18

rbriceno dijo...Hola Javier. Quisiera consultarte algo. Yo necesito algo parecido a lo que tú haces en el blog, pero necesito algoadicional. Yo requiero que la macro tome dos valores de una pagina (con su respectivo texto identificador: mejor ofertade compra y mejor oferta de venta) cada 5 o 10 minutos durante el periodo que va de las 8 a las 4.30 pm. Qué serequiriría adicionalmente como código? saludos y gracias.7 de junio de 2011, 5:45

Javier Marco dijo...Hola rbriceno.

Pues con lo que has leído en este artículo, lo que aparece en este otro donde explico como ejecutar una macro a unahora determinada, y un poco de trabajo y esfuerzo, lo tendrás chupado.

Un saludo.7 de junio de 2011, 7:08

Anónimo dijo...http://office.microsoft.com/es­es/excel­help/obtener­datos­externos­de­una­pagina­web­HA010218472.aspx

Veo esta página de office. Es mucho más fácil así.

Me salió facilimo.

suerte!!!29 de agosto de 2011, 16:46

Javier Marco dijo...Son dos ejemplos completamente diferentes. No tienen nada que ver el ejemplo de la web de Microsoft, y el ejemplo deeste blog ;­)

Un saludo.29 de agosto de 2011, 17:00

Anónimo dijo...Javier, el post es genial, pero lo tengo un poco mas difícil, tengo una rutina que crea una consulta en la web a partir deun formulario que envío, necesito recuperar los datos de la pagina de respuesta, siempre tiene la misma dirección peroevidentemente no se puede acceder directamente porque depende del formulario para calcularse, ¿Cómo podría copiarel código de la pagina Web activa?29 de septiembre de 2011, 20:28

Anónimo dijo...Estupendo blog y de gran ayuda.

¿Cómo puedo solucionar el siguiente problema?

La información a capturar está tras la etiqueta html pero en otra línea, no justo a continuación como en su ejemplo.Esdecir:"etiqueta html anterior al texto""dato a recoger en la línea siguiente"

Muchas gracias.24 de noviembre de 2011, 20:13

Guillermo11 dijo...¿Se puede incluir en la macro un acceso previo a una página de login para luego continuar con el proceso de extracción?7 de diciembre de 2011, 13:55

Tinchossh dijo...Hola tengo un proyecto en el cual necesito extraer informacion de la base de datos de varios sitios donde esta lainformacion de diversos centros educativos, lo estoy haciendo de forma manual pero son mas de 5000 registros si es queno me quedo corto, mire el codigo fuente pero no encuentro donde llama a la Base de datos, ya que estan hechas conjavascript y veo que llama a diversos .js alguien me puede ayudar para poder extraer la informacion en un excel para

Page 8: Obtener Datos de Una Página Web _ Hojas de Cálculo Excel

11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel

http://www.hojasdecalculoexcel.com/2009/09/obtener­datos­de­una­pagina­web.html 8/9

poder generar una base de datos para usar la informacion en la aplicacion que tengo que desarrollar???? les dejo miemail, [email protected], desde ya muchas gracias.­18 de diciembre de 2011, 23:12

Yavir dijo...Javier:Para agradecerte por tus nuevas publicaciones que son excelentes y de gran utilidad. A raiz de este maravilloso artículo,tengo una consulta que hacerte: Como se podria averiguar si una dirección web esta funcionando o no?. Digamos sitengo 50 direcciones web que deben ser revisadas su funcionamiento todo los dias,con una macro como esta, se podriaponer en la columna siguiente a la de las adirecciones web, activa o inactiva?, segun sea el caso y sin abrirlas. Graciaspor la atención y por tus enseñanzas.27 de febrero de 2012, 15:41

Julio dijo...Muy buen dia.Excelente post.Me ha servido para varias paginas donde puede delimitar la cadena de caracteres que me interesa; osea, donde puedo obtener las variables Principio yFinal.

Pero en el caso donde solo puedo obtener la variable Principio, como haria para acotar la cadena que me interesa? P.ej,si me interesa el texto a partir de la variable Principio + 100 caracteres?Desde ya graciasSaludos.Julio.22 de marzo de 2012, 13:17

Javier Marco dijo...Julio, eso es muy sencillo. Fíjate que hay una variable llamada "posicion1", que nos devuelve el nº de caracter dondeencuentra la cadena de texto que buscamos, y que se llama "principio":

posicion1 = InStr(texto, principio)

Para saber la "posición2", que contendrá una cadena de 100 caracteres, simplemente hacemos esto:

posicion2 = InStr(texto, principio) + 100

Saludos.22 de marzo de 2012, 15:57

Gustavo dijo...En primer lugar quiero felicitarte por blog, es realmente excelente y también agradecerte por el tiempo que dedicas aeste espacio.

Mi pregunta es la siguiente:Como hago para que cada vez que obtengo la cotización, cada valor se vaya copiando en una tabla, de manera que alfinal del día tenga un registro de todas las cotizaciones.

Nuevamente Gracias15 de julio de 2012, 0:57

Javier Marco dijo...Bueno, como sabes las cotizaciones bursátiles cambian continuamente, por lo que puedes crear un macro (siemprebuscando un carácter o delimitador, para cortar la cadena donde se aloja la cotización de cada valor), para que porejemplo a las seis de la tarde, te copie los datos de la web de la que obtengas la información, y luego te vuelque esosdatos en una hoja aparte (dentro del mismo libro), que se llame por ejemplo con el día en cuestión (ej: 15­07­2012),pegando solo los valores. Esto último se puede hacer con la grabadora de macros de una forma muy sencilla. Lo deobtener las cotizaciones requiere mucho más trabajo, para poder aislar cada cotización de cada valor, pero la forma dehacerlo es idéntica a la del ejemplo en el que buscamos la cotización del dolar.

Saludos.15 de julio de 2012, 22:01

Robert Blanco dijo...Muy agradecido por compartir sus conocimiento. Estoy probando este codigo, pero tengo problemas a la hora de abrir lapágina web. La página a la cual quiero acceder, tiene un modulo de consulta, donde se ingresa unos valores y la paginamuestra un resultado. Este resultado a obtener es una palabra ("VALIDO") y que es la palabra que quiero llevar a laplanilla. Consulto cual podria ser el problema de no poder abrir la pagina.

Y en caso que yo ya tenga la página abierta, con los resultados de la consulta en pantalla, ¿como modificaría el códigosuyo?, para que ya no intente abrir la página, y busque directamente en el código fuente.19 de septiembre de 2012, 20:04

Robert Blanco dijo...Quiero agregar que la página a la cual quiero acceder tiene un control de captcha, que me imagino que tiene suincidencia, por lo que decia si es posible, con alguna modificacion al codigo, teniendo ya la página abierta, poder obtenerel dato en particular que se requiere.20 de septiembre de 2012, 22:02

Juan Manuel Martín dijo...Excelente macro!! justo buscaba esto. Lo que pasa es que necesito algo similar pero para esta web:

Page 9: Obtener Datos de Una Página Web _ Hojas de Cálculo Excel

11/9/2015 Obtener datos de una página web : Hojas de cálculo Excel

http://www.hojasdecalculoexcel.com/2009/09/obtener­datos­de­una­pagina­web.html 9/9

Entrada más reciente Entrada antigua

http://www.bna.com.ar/bp/bp_cotizaciones_historico.asp?op=b&id=1

Necesito la cotización de cierre del dolar, del día hábil anterior al que estoy. La web que pasé, pone un control decalendario para seleccionar el día que quiero.

Alque se se me ocurrió es poner en una celda del excel la fecha de la cual yo quiero la cotización. Pero no se comomandarle el dato a la web y a este control de calendario para que me de la cotización que busco.

Quizás es algo más complejo que el ejemplo. Si me pudieran ayudar, lo agradezco.

Saldos y excelente trabajo!1 de octubre de 2012, 18:26

Anónimo dijo...Yo tambien tengo el mismo problema de Juan Manuel Martin. Como sería la solucion. GRacias28 de noviembre de 2012, 15:01

Carlos Augusto Escobar dijo...Excelente ya la ejecute y funciono sin embargo necesito extraer un dato pero la pagina necesita usuario y clave , comopuedo hacer esto?28 de febrero de 2013, 4:21

Publicar un comentario en la entrada

Página principal

Suscribirse a: Enviar comentarios (Atom)

© Copyright Hojas de cálculo excel | Aviso legal

Anuncios Google Web HTML Precio web Pagina web Crear web