Saltar al contenido

Extraer datos de la tercera ventana de una página web con vba e IE


Recommended Posts

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

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

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.