• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

Excel importar tabla de web con filtro

Jerez

New member
Hola,

Agradecería una sugerencia o ayuda.

He conseguido importar los datos de una página web donde fácilmente he localizado la table en el código HTML pero quiero hacer lo mismo cuando en la página web tiene un filtro previo.

La página es: IE.navigate ("https://es.investing.com/equities/americas")

la table es: IE.document.getElementById("cross_rate_markets_stocks_1")

pero tiene varias opciones: el código HTML es:

1584956642214.png

y me saca la p0rimera de la lista, el Dow Jones" y yo quiero la segunda, el "Nasdaq 100" por ejemplo..
He intentado con la instrucción IE.document.getElementById("stocksFilter").Value = "20" para que filtre la tabla por "Nasdaq 100" por ejemplo pero resulta que no funciona.

Mi pregunta es la siguiente, ¿cuál es la instrucción den VDA para llegar a visualizar una web con filtros previos ?

Gracias y saludos
 

eavjperu

Member
Una forma:

Código:
Sub MoverCombo()

Dim IE As Object, MiCombo As Object

Set IE = CreateObject("InternetExplorer.Application")

IE.navigate "https://es.investing.com/equities/americas"

Do Until IE.readyState = 4
    DoEvents
Loop

Application.Wait (Now + TimeValue("0:00:01"))


Set MiCombo = IE.document.getElementbyid("stocksFilter")
MiCombo.selectedIndex = 6

IE.Visible = True

Set IE = Nothing

End Sub
Comentas

Abraham Valencia
https://abrahamexcel.blogspot.com/
Lima, Perú
 

Jerez

New member
Muchas gracias por tu rápida respuesta Abraham.

Te comento si te parece lo que ha pasado:

MiCombo.selectedIndex = 6 : Funciona perfectamente. Ha seleccionado la posición 6 (yo la cambié por la 1) pero el problema es que no se activa. Hace falta una instrucción intro o algo parecido para que aparezcan los datos actualizados a ese filtro seleccionado.

Parece que sólo se actualiza el nombre del filtro. He intentado probar el VDA con cada una de estas 3 instrucciones por probar pero nada:

IE.document.GetElementById("stocksFilter").Click
IE.document.getelementsbytagname("button")(1).Click
IE.Document.getElementsByClassName("selectBox").Click

Te adjunto la hoja en cuestión con la que estoy trabajando. El módulo es el 2. Con el modulo 1 no tuve problemas porque la table fue fácil localizarla en la pagina web y no hay que hacer filtro precio para verla, se carga con la dirección url.


Gracias de nuevo.
 

Adjuntos

Última edición:

Cacho R

Well-known member
Hola! Jerez (y Abraham)
Vi la puerta abierta, luz encendida y... ¡entré!, (Jajjjajja)
  • En la hoja Stock del archivo que adjunto debes hacer Click para actualizar cada 15 días, cada mes, etc. porque los ID no cambian comúnmente.
  • Y en la hoja Cotizaciones América puedes elegir lo que desees en al desplegable de la celda A2 y luego Click para ver las respectivas cotizaciones.
¿Te sirve así?...
Saludos, Cacho R.

P.D.
La página de Investing.com es "genial". Sin embargo ten en cuenta que suele "clavarse" con demasiada frecuencia.
Así que si notas que la macro "se tarda" es porque la página -propiamente dicha- es la que "murió de muerte natural".
 

Adjuntos

Jerez

New member
Hola! Jerez (y Abraham)
Vi la puerta abierta, luz encendida y... ¡entré!, (Jajjjajja)
  • En la hoja Stock del archivo que adjunto debes hacer Click para actualizar cada 15 días, cada mes, etc. porque los ID no cambian comúnmente.
  • Y en la hoja Cotizaciones América puedes elegir lo que desees en al desplegable de la celda A2 y luego Click para ver las respectivas cotizaciones.
¿Te sirve así?...
Saludos, Cacho R.

P.D.
La página de Investing.com es "genial". Sin embargo ten en cuenta que suele "clavarse" con demasiada frecuencia.
Así que si notas que la macro "se tarda" es porque la página -propiamente dicha- es la que "murió de muerte natural".


Muchas gracias !!!
La hoja está más que perfecta. La verdad que no me esperaba una respuesta así, que me servirá también de manual para cuando quiera hacer algo parecido.
Aprecio mucho tu colaboración. Que pases unas buenas tardes Cacho R.
 

Cacho R

Well-known member
... Que pases unas buenas tardes Cacho R
Te deseo lo mismo: ¡Buenas tardes :D y poco virus 😷 !
__________________
... me servirá también de manual para cuando quiera hacer algo parecido.
Te sugiero que le pidas a Abraham ( @eavjperu ) que te muestre como "completar la faena" pues no todas las páginas en la Web ofrecen un modelo para el objeto msXML2.XMLHttp y deberás recurrir al IE (o a Power Q si lo sabes utilizar).

Saludos, Cacho R.
 
Última edición:

Jerez

New member
Te deseo lo mismo: ¡Buenas tardes :D y poco virus 😷 !
__________________

Te sugiero que le pidas a Abraham que te muestre como "completar la faena" pues no todas las páginas en la Web ofrecen un modelo para el objeto msXML2.XMLHttp y deberás recurrir al IE (o a Power Q si lo sabes utilizar).

Saludos, Cacho R.

Gracias de nuevo por escribir Cacho R. Le pregunté a Abraham cómo terminar eso para entender el código que estaba haciendo ya que no me funcionaba lo del clic. Espero sea tan amable y tenga un hueco para echarle un vistazo a lo que le envié. Para Uds. es sencillo.

No soy experto ni mucho menos. Pondré en mis tareas descargar power query y echarle un vistazo. Ahora estaba intentando modificar tus instrucciones para que a continuación de una petición de un mercado, por añadiera otro mercado pero no lo consigo. Pero bueno, lo podré en otra hoja copiando tus datos.

Un abrazo y gracias de nuevo. Cuidaros por allí también. 😷 😀
 

eavjperu

Member
Hola Cacho y Jerez

Ando entrando muy poco a los foros, a pesar de la "cuarentena" obligada en mi país, ya que estoy más metido en el análisis del Coronavirus, es más, mi último artículo es sobre eso:

https://abrahamexcel.blogspot.com/2020/03/descargando-datos-del-coronavirus.html

Pero, y tomando en cuenta lo sugerido por mi amigo Cacho, justo ahí uso un método de extracción de datos de una web a través de Power Query. Sugiero leer bien al respecto.

Sobre el objeto IE, si bien es más lento que msXML2.XMLHttp (y similares), tiene justamente la ventaja que menciona Cacho: Es más fácil aplicarlo en cualquier web. Y yo agregaría que es un poco más fácil de entender. En el caso de tu web y mi ejemplo, yo ni lo probé, me limité a escribir/reemplazar alguno de mis ejemplos, pero con tu comentario yo diría que solo faltó un "clic":

Código:
Sub MoverCombo()

Dim IE As Object, MiCombo As Object

Set IE = CreateObject("InternetExplorer.Application")

IE.navigate "https://es.investing.com/equities/americas"

Do Until IE.readyState = 4
    DoEvents
Loop

Application.Wait (Now + TimeValue("0:00:01"))


Set MiCombo = IE.document.getElementbyid("stocksFilter")

MiCombo.selectedIndex = 2
MiCombo.FireEvent "onchange"

IE.Visible = True

Set IE = Nothing

End Sub
Más sobre el objeto IE:

https://abrahamexcel.blogspot.com/search?q=internet

Saludos
 

Jerez

New member
Muchas gracias Abrahan.
Lo he probado y me sirvió tanto para que funcionara como para entender el código.
Agradezco tus explicaciones acerca de la ayuda de Cacho y lo que has publicado acerca del coronavirus.
Ahora ya sé de qué va el power que comentó Cacho. Gracias.

Un abrazo a los dos y... stay health !!!
 
Arriba