Extraer datos de la tercera ventana de una página web con vba e IE
publicado
buenas tardes
sólo tengo algunas nociones de vba pero consultando la web he creado una macro
mi macro pretende abrir una página web y extraer algunos datos y copiarlos en una hoja excel
la página requiere la inclusión de un usuario, contraseña y un CIF
he logrado automatizar la apertura de la página principal, desplazarme a otra página de la misma web pulsando un enlace, incluir en ésta el usuario, contraseña y CIF y validar los datos pulsando el botón oportuno
en este punto se muestran parte de los datos a importar a Excel
en este punto no sé cómo seguir y se me plantean tres problemas
1º. Cómo selecciono la página que contiene los datos para importarlos a excel. He intentado varias cosas siguiendo ejemplos de la web pero siempre me importa los datos de la página justamente anterior. Parece como si la que me interesa y estoy viendo no estuviese activa
2º. En realidad los datos se extienden en varias ventanas aunque toda las tienen el mismo “title”. No sé mucho pero creo que están organizadas en “frames”. Cómo podría bajar TODOS los datos independientemente de las ventanas que ocupen
3º.Finalmente, después de ensayar muchas veces diversas formulaciones de mi macro llega un momento en que me sale un mensaje de error que dice literalmente “Se ha producido el error ‘-2147467259 (80004005)’ en tiempo de ejecución: Error de Automatización . por qué se produce ese error, parece que internet se bloquea
Estoy usando EXCEL 2010 e INTERNET EXPLORER 9 y he establecido en VBA las librerías MICROSOFT INTERNET CONTROL y MICROSOFT HTML OBJECT LIBRARY
No puedo indicar la URL exacta porque es confidencial pero os muestro lo que he escrito.
Disculpad si cometo alguna omisión u error
Saludos
Sub Extraerdatos()
Set IE = New InternetExplorer
Set IE = CreateObject("InternetExplorer.application") ‘creo la instancia de IE
buenas tardes
sólo tengo algunas nociones de vba pero consultando la web he creado una macro
mi macro pretende abrir una página web y extraer algunos datos y copiarlos en una hoja excel
la página requiere la inclusión de un usuario, contraseña y un CIF
he logrado automatizar la apertura de la página principal, desplazarme a otra página de la misma web pulsando un enlace, incluir en ésta el usuario, contraseña y CIF y validar los datos pulsando el botón oportuno
en este punto se muestran parte de los datos a importar a Excel
en este punto no sé cómo seguir y se me plantean tres problemas
1º. Cómo selecciono la página que contiene los datos para importarlos a excel. He intentado varias cosas siguiendo ejemplos de la web pero siempre me importa los datos de la página justamente anterior. Parece como si la que me interesa y estoy viendo no estuviese activa
2º. En realidad los datos se extienden en varias ventanas aunque toda las tienen el mismo “title”. No sé mucho pero creo que están organizadas en “frames”. Cómo podría bajar TODOS los datos independientemente de las ventanas que ocupen
3º.Finalmente, después de ensayar muchas veces diversas formulaciones de mi macro llega un momento en que me sale un mensaje de error que dice literalmente “Se ha producido el error ‘-2147467259 (80004005)’ en tiempo de ejecución: Error de Automatización . por qué se produce ese error, parece que internet se bloquea
Estoy usando EXCEL 2010 e INTERNET EXPLORER 9 y he establecido en VBA las librerías MICROSOFT INTERNET CONTROL y MICROSOFT HTML OBJECT LIBRARY
No puedo indicar la URL exacta porque es confidencial pero os muestro lo que he escrito.
Disculpad si cometo alguna omisión u error
Saludos
Sub Extraerdatos()
Set IE = New InternetExplorer
Set IE = CreateObject("InternetExplorer.application") ‘creo la instancia de IE
IE.Navigate (https://www.lapáginadelaquequieroimportarlosdatos) ‘navego a la página
Do
If IE.ReadyState = 4 Then
IE.Visible = True
Exit Do
Else
DoEvents
End If
Loop
‘espero a que la página se carge completamente
IE.Document.getElementById("enlace2Preview").Click ‘ pulso click para pasar a la siguiente página
If IE.LocationName = "elbotonquepulsoparacambiardelapantallapricipalalasiguiente" Then
End If
IE.Quit ‘una vez en la segunda página selecciono la primera y la cierro
Application.Wait Now + TimeValue("0:0:05")' espero cinco segundos a que se carge la página
Call Test ‘ llamo a la macro "test" para que me seleccione esta segunda página de forma que pueda incluir las claves
Set IE = Nothing
End Sub
Sub Test()
Dim shl As Object
Dim IE As Object
Dim IEdoc As Object
Dim Document As Object
Dim ele As Object
Set shl = CreateObject("Shell.Application")
On Error Resume Next
For Each IE In shl.Windows
Set IEdoc = Nothing
Set IEdoc = IE.Document
If TypeName(IEdoc) = "HTMLDocument" Then
IE.Document.getElementById("contraseña").Value = "micontraseña"
IE.Document.getElementById("usuario").Value = "miusuario"
IE.Document.getElementById("cif").Value = "micif"
IE.Document.Links(0).Click ‘ incluyo los datos y valido lo que me lleva a la página de los datos que quiero importar
End If
‘A partir de aquí no sé qué hacer para que me “seleccione” esta tercera página para poder trabajar con ella
Next IE
On Error GoTo 0
Set IEdoc = Nothing
Set IE = Nothing
Set shl = Nothing
End Sub