Hojas de cálculo en Excel - página principal

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/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 a continuación. Si os fijáis, he marcado con una flecha lo que buscaremos:



¿Cómo vamos a obtener esa información?. Pues de una forma relativamente sencilla. A través del objeto XMLHTTP, lo que haremos será abrir esa página web, pero no como la ve un usuario, sino como la ve un buscador, o incluso un webmaster que desarrolla 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ágina web, lo podéis ver desde vuestro navegador favorito (Internet Explorer, Firefox, Chrome, Opera, Safari, etc.), seleccionando en el menú "Ver", la opción "Código fuente", o "Código fuente de la página", o cualquier otra opción similar, dependiendo del navegador 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 delante y detrás de la información que estamos buscando. Siempre podremos elegir un patrón por el cual guiarnos. Por ejemplo, en el caso 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 que os he puesto más arriba, veremos que delante de la hora de cotización de dólar, aparece este código (técnicamente, dentro del código fuente, lo que hay entre el signo "<" y ">", se denomina "etiqueta html"):

primary-home col-l

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 esa página web. También observaremos que detrás de la hora, nos aparece este otro código:

<article class="datos-divisa indices_bursatiles">

Pues bien, lo que haremos será determinar en qué posición se encuentran ambos códigos, dentro del texto de la página, es decir, si el texto de la página tiene 50.000 caracteres, obtendremos la posición de esos dos códigos que delimitan el dato que deseamos 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 el segundo, en la posición 30.277 (en ambos casos, me he inventado la posición que ocupan esos códigos, pues pueden ser otros distintos).

Una vez hecho eso, obtendremos todo el texto que haya entre ambas posiciones, es decir, suponiendo que la posición en que se encuentran esos códigos sea la que he puesto en el párrafo anterior, lo que haremos será buscar el texto que hay entre el cará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ás información que no necesitamos (recordemos que el código inicial y final, delimitaban el dato que necesitamos, es decir, la cotizació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á este có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 texto en otros textos más pequeños. Lo haremos con la función Split, como comentaba anteriormente, y lo que haremos será separar el texto en dos bloques.

Si miráis el código y 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, pero antes le quitaremos todo el código innecesario de delante, con la función Right, para escoger los caracteres de la derecha que nos interesen, y que en nuestro caso son siete caracteres.

Una vez hecho eso, lo que tendremos que hacer es obtener la cotización, para lo cual nos quedaremos con los 6 primeros caracteres 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 (junto con un texto delante que eliminaremos) y en el bloque 2 la cotización del 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. En nuestro 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 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 esa informació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 de formato, de presentación, de contenidos, etc.), y por tanto debas revisar este código, para readaptarlo a la nueva ubicación de la 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 revisado y actualizado precisamente porque la página web origen de los datos, ha sido modificada (fecha de actualización de este artículo: 09/03/2016).

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

Sub Cotizacion_del_dolar()
'Ocultamos el procedimiento
Application.ScreenUpdating = False
'Si hay errores, que continúe
On Error Resume Next
'pasamos a una variable, la página de la
'que vamos a sacar la información

web = "http://www.finanzas.com/divisas/usd-eur/"
'pasamos la parte que rodea al texto
'que nos interesa, a variables

principio = "primary-home col-l "
final = "<article class=""datos-divisa indices_bursatiles"">"
'creamos el objeto xmlhttp
Set xml = CreateObject("Microsoft.XMLHTTP")
'accedemos a la página web
xml.Open "POST", web, False
'mandamos el contenido
xml.Send
'pasamos el contenido a una variable
texto = xml.responseText
'miramos en que nº de carácter aparecen los textos
'que envuelven la información que necesitamos.
'Primero con la posición inicial

posicion1 = InStr(texto, principio)
'ahora con la posición final
posicion2 = InStr(texto, final)
'recuperamos el texto que hay entre esas dos posiciones
dato = Mid(texto, posicion1, (posicion2 - posicion1))
'si no hay errores, que haga lo que tiene que hacer
If 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>",
'ponemos solo la cotización, por lo que solo
'nos servirán los 6 primeros dígitos: X,XXXX

cotizacion(1) = Left(cotizacion(1), 6)
'Escribimos el dato
Range("B9") = "Cotización del dólar:"
Range("C9") = CSng(cotizacion(1))
Range("D9") = "euros = 1 dólar"
'convertimos las unidades a dólar/euro
Range("C10") = CSng(1 / Range("C9"))
'mostramos 4 decimales
Selection.NumberFormat = "#,##0.0000"
Range("D10") = "dólares = 1 euro"
'ahora cogemos los datos de la hora
'y le damos formato de fecha

Range("C12").NumberFormat = "dd/mm/yyyy"
Range("B12") = "Hora:"
'ponemos los últimos 7 caracteres para saber la hora
cotizacion(0) = Right(cotizacion(0), 7)
Range("C12") = cotizacion(0)
'le damos formato de hora
Range("C12").NumberFormat = "hh:mm"
'si hay errores, mostramos un mensaje
Else
Range("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ón

Range("B7") = "Fuente:"
ActiveSheet.Hyperlinks.Add Anchor:=Range("C7"), Address:=web
'limpiamos el objeto
Set xml = Nothing
'Mostramos el procedimiento
Application.ScreenUpdating = True
End Sub

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


Desde aquí podéis descargar el fichero, con el ejemplo que hemos visto en este artículo (fichero resubido el 09/03/2016, y artículo actualizado).



37 comentarios:

Pollander dijo...

Este blog es simplemente excelente!! No hay entrada que no me resulte de utilidad. Muchas Gracias!! Ahora bien, me pregunto si hay alguna posibildad de que la información que se vierta en un textbox sea volcada a un cuadro de texto en particular.
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 un archivo word.
Muchas Gracias de nuevo!

Pollander dijo...

Javier. Estuve probando y ya lográ lo que pedía en el mensaje anterior!!!. Ahora solo me falta poder ajustar el espacio entre caracteres en el cuadro de texto.
Gracias

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 hasta aprox 180 veces y me marca error de automatización y se traba excel solo puedo guardar el avance y al volverlo abrir puedo seguir ejecutando la macro otras 180 veces
por mas que he buscado no se como evitar eso alguna idea. Gracias de antemano

Aalvarez dijo...

Javier

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

Saludos

Leo Orive 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 y hacerle click al label me lleve a mi www.misitio.com. Desde ya, muchas gracias.

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 estos datos ya lo tengo en una hoja de excel, existe una forma mediante macros para hacer esta tarea. GRACIAS

Unknown 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 label en un UserForm, es decir por ejemplo en un UserForm, tengo un label que dice pagina web del autor, entonces lo que quiero hacer es que al darle click me abra la pagina de internet vinculada.

Gracias nuevamente...

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 si usando este codigo de visual basic podría tener en tiempo real el saldo de mi cuenta bancaria sin tener que cada vez entrar en la web del banco y meter las claves.

Muchas Gracias y de nuevo enhorabuena.

Unknown dijo...

Este blog es buenisimo he estado tratando de hacer algo parecido pero no me ha ido bien yo lo que quiero es usar un traductor osea una pagina para traducir pero el problema es que primero tengo que mandar o copiar una palabra que este en alguna celda de excel en el traductor o pag para tarducir y despues recoger la informacion que me manda y ponerla en una celda de excel pero no me ha ido bien si alguien tiene alguna ayuda lo agradecere mucho

Federico Alvarez 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 255 caracteres segun Microsoft, pero son 248 en realidad.

Te has topado con este problema? Has podido solucionarlo?

Dejo mi correo por las dudas:

f.alvarez@adinet.com.uy

Desde ya muchas gracias.

Saludos,
Federico

El pilt®afilla - www.3piesalgato.com 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 te muestro en este ejemplo:

Sub ejemplo()
'creamos una variable
variable = "Este texto tiene 30 caracteres"
'mostramos solo los primeros 20 caracteres
variable = Left(variable, 20)
MsgBox (variable)
End Sub

Federico Alvarez dijo...

Muchas gracias Javier Marco. El link de Microsoft no fue de mucha ayuda, pero tu comentario sin duda si lo fue. Parece que 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.

Unknown dijo...

un post fantastico, util y ameno; felicidades al autor!

Unknown 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 excel claro esta
gracias

Carlos de la Vega dijo...

Hola que tal, yo estoy queriendo hacer los mismo, pero para consultar parametros de una maquina, la verdad no se mucho de esto, solo se que estos datos viene mediante una tabla, como puedo publicar ese codigo en estos comentarios, ayudenme porfaaa!!

Unknown dijo...

Hola, enhorabuena por el post. Estoy intentando utilizar tu método pero no me funciona, y me asaltan las siguientes dudas:
¿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 aportes

Martin dijo...

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

El pilt®afilla - www.3piesalgato.com dijo...

Para coticlub:

Fíjate que recuperamos los caracteres donde empieza y finaliza el texto que queremos recuperar (antes de depurarlo), y lo 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 de 255 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 motivo prefiero no hacer trabajos por encargo. No obstante, en el ejemplo del blog tienes información suficiente para montarte un macro y poder recuperar esa información de la web. ¿Problema?. El día que cambie el diseño de la web (o aunque no sea diseño, que cambién algo por poco que sea), te afectará al macro, y deberás revisarlo para arreglarlo.

Un saludo.

Miguel dijo...

Hola Javier. te acompaño un link a mi archivo Excel para mayor entendimiento de mi exposición. http://db.tt/O8XKwxi si sabes 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 a Google 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. miguel

rbriceno dijo...

Hola Javier. Quisiera consultarte algo. Yo necesito algo parecido a lo que tú haces en el blog, pero necesito algo adicional. Yo requiero que la macro tome dos valores de una pagina (con su respectivo texto identificador: mejor oferta de 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é se requiriría adicionalmente como código? saludos y gracias.

El pilt®afilla - www.3piesalgato.com 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 una hora determinada, y un poco de trabajo y esfuerzo, lo tendrás chupado.

Un saludo.

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!!!

El pilt®afilla - www.3piesalgato.com dijo...

Son dos ejemplos completamente diferentes. No tienen nada que ver el ejemplo de la web de Microsoft, y el ejemplo de este blog ;-)

Un saludo.

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 de un formulario que envío, necesito recuperar los datos de la pagina de respuesta, siempre tiene la misma dirección pero evidentemente no se puede acceder directamente porque depende del formulario para calcularse, ¿Cómo podría copiar el código de la pagina Web activa?

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.Es decir:
"etiqueta html anterior al texto"
"dato a recoger en la línea siguiente"

Muchas gracias.

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?

Tinchossh dijo...

Hola tengo un proyecto en el cual necesito extraer informacion de la base de datos de varios sitios donde esta la informacion de diversos centros educativos, lo estoy haciendo de forma manual pero son mas de 5000 registros si es que no me quedo corto, mire el codigo fuente pero no encuentro donde llama a la Base de datos, ya que estan hechas con javascript y veo que llama a diversos .js alguien me puede ayudar para poder extraer la informacion en un excel para poder generar una base de datos para usar la informacion en la aplicacion que tengo que desarrollar???? les dejo mi email, tinchossh@gmail.com, desde ya muchas gracias.-

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 si tengo 50 direcciones web que deben ser revisadas su funcionamiento todo los dias,con una macro como esta, se podria poner en la columna siguiente a la de las adirecciones web, activa o inactiva?, segun sea el caso y sin abrirlas. Gracias por la atención y por tus enseñanzas.

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 y Final.

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 gracias
Saludos.
Julio.

El pilt®afilla - www.3piesalgato.com dijo...

Julio, eso es muy sencillo. Fíjate que hay una variable llamada "posicion1", que nos devuelve el nº de caracter donde encuentra 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.

Gustavo dijo...

En primer lugar quiero felicitarte por blog, es realmente excelente y también agradecerte por el tiempo que dedicas a este 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 al final del día tenga un registro de todas las cotizaciones.

Nuevamente Gracias

El pilt®afilla - www.3piesalgato.com dijo...

Bueno, como sabes las cotizaciones bursátiles cambian continuamente, por lo que puedes crear un macro (siempre buscando un carácter o delimitador, para cortar la cadena donde se aloja la cotización de cada valor), para que por ejemplo a las seis de la tarde, te copie los datos de la web de la que obtengas la información, y luego te vuelque esos datos 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 de obtener las cotizaciones requiere mucho más trabajo, para poder aislar cada cotización de cada valor, pero la forma de hacerlo es idéntica a la del ejemplo en el que buscamos la cotización del dolar.

Saludos.

Robert Blanco dijo...

Muy agradecido por compartir sus conocimiento. Estoy probando este codigo, pero tengo problemas a la hora de abrir la página web. La página a la cual quiero acceder, tiene un modulo de consulta, donde se ingresa unos valores y la pagina muestra un resultado. Este resultado a obtener es una palabra ("VALIDO") y que es la palabra que quiero llevar a la planilla. 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ódigo suyo?, para que ya no intente abrir la página, y busque directamente en el código fuente.

Robert Blanco dijo...

Quiero agregar que la página a la cual quiero acceder tiene un control de captcha, que me imagino que tiene su incidencia, por lo que decia si es posible, con alguna modificacion al codigo, teniendo ya la página abierta, poder obtener el dato en particular que se requiere.

Juan Manuel Martín dijo...

Excelente macro!! justo buscaba esto. Lo que pasa es que necesito algo similar pero para esta web:

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 de calendario 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 como mandarle 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!

Anónimo dijo...

Yo tambien tengo el mismo problema de Juan Manuel Martin. Como sería la solucion. GRacias

Unknown dijo...

Excelente ya la ejecute y funciono sin embargo necesito extraer un dato pero la pagina necesita usuario y clave , como puedo hacer esto?