Jump to content
Sign in to follow this  
novo34

Abrir IE en una pagina específica desde excel y loguearse!!

Recommended Posts

Estimados,

Espero que por favor me puedan ayudar con este problema... He estado intentando abrir una pagina de internet explorer desde excel 2010 e insertar los datos (User y Password) para loguearme.

Se abre la pagina pero no he podido ingresar los datos porque me sale el siguiente error: Se ha producido el error '91' en tiempo de ejecución: Variable de Objeto o bloque with no establecido.

Estoy utilizando este código:

Option Explicit

Sub Loguearse()
Dim appIE As Object ' InternetExplorer
Dim doc As Object 'HTMLDocument
Dim URL As String
Dim objIMG As Object ' HTMLImg
Dim objAnchor As Object ' HTMLAnchorElement

Set appIE = CreateObject("InternetExplorer.Application")

URL = "http://200.25.197.138:7778/axis/login/gef_login.jsp"

With appIE
.navigate URL
.Visible = True

Do While .Busy: DoEvents: Loop
Do While .ReadyState <> 4: DoEvents: Loop

Set doc = .Document

doc.getElementById("user").Value = "Usuario" 'Aquí se para la macro

doc.getElementById("password").Value = "Password"

Set objIMG = doc.images("Image148211")

Set objAnchor = objIMG.parentElement

objAnchor.Click

Do While .Busy: DoEvents: Loop
Do While .ReadyState <> 4: DoEvents: Loop

End With

Set appIE = Nothing

End Sub
[/CODE]

Espero me puedan ayudar con esto señores.

Muchas gracias

Share this post


Link to post
Share on other sites

Aquí el punto es que necesitas saber qué ID tien asignado el campo de usuario y el campo de password dentro del archivo .jsp.

Si tienes acceso al código fuente de la página revisa esos datos.

Lo probé con una páginas php que tengo y me funciona bien.

Share this post


Link to post
Share on other sites

Hola novo34,

me parece que la página a la que quieres acceder es un frame para esta otra:

http://200.25.197.138:7778/axis/login/gep_login.jsp

Por lo que quizás quieras probar mejor con esa directamente.

Ya en esta última página, no veo ningún elemento con Id "user" ni "password", por lo que no vale de nada usar .getElementById.

Existen los elementos de dicho nombre, por lo que quizás en su lugar quieras usar .getElementsByName. Ten en cuenta que a diferencia del Id, pueden existir varios elementos con el mismo nombre, por lo que dicho método te devolverá un array, de allí debes extraer el primer elemento: .getElementsByName("user")(0).value = "pascual".

No he hecho pruebas ni he probado tu código, sólo he observado el DOM de la página que mencionas. Como sea, no soy muy partidario de interactuar de esta forma con una página Web, quizás mejor quieras enviar las solicitud POST directamente al servidor y quizás sea más conveniente usar algo más liviano y no dependiente de IE (a mi, personalmente, me gusta winHTTP).

Share this post


Link to post
Share on other sites

Gracias a todos por sus respuestas, pero ya he probado con todo lo que he encontrado pero no logro acceder.

mjrofra, muchas gracias por tu respuesta voy a probar lo que me dices a ver si funciona ya que me dijeron que la pagina esta cifrada, y la verdad es para mi trabajo ya que debo ingresar de 300 a 500 clientes con muchos datos cada uno en esta pagina diariamente y es algo muy tedioso por lo que busco automatizar esto.

saludos.

- - - - - Mensaje combinado - - - - -

mjrofra, ya probé como me dijiste con .getElementsByName("user")(0).value = "pascual" pero no funciona, si me podrías ayudar haciéndolo con otro código como dices enviando una solicitud POST al servidor??? te agradecería muchísimo.

Share this post


Link to post
Share on other sites

Hola,

sería útil saber qué quieres decir cuando dices que no te funciona. ¿te sigue arrojando el mismo error? Ten en cuenta que el error era porque no existía elemento con ese Id como te indiqué.

Quizás esto te ponga en camino (aunque no es más que lo que ya te dije):

Sub Loguearse()

Dim appIE As Object ' InternetExplorer
Dim doc As Object 'HTMLDocument
Dim URL As String
Dim objIMG As Object ' HTMLImg
Dim objAnchor As Object ' HTMLAnchorElement

Set appIE = CreateObject("InternetExplorer.Application")

URL = "http://200.25.197.138:7778/axis/login/gep_login.jsp"

With appIE
.Visible = True
.navigate2 URL

Do While .ReadyState <> 4 Or .Busy
DoEvents
Loop

With .document
.getElementsByName("user")(0).Value = "Usuario" 'Aquí se para la macro
.getElementsByName("password")(0).Value = "Password"
.parentWindow.execScript "ok()", "JavaScript"
End With

End With

Set appIE = Nothing

End Sub[/CODE]

Share this post


Link to post
Share on other sites
...me podrías ayudar haciéndolo con otro código como dices enviando una solicitud POST al servidor??? ...

El uso de winHttp puede resultar un poco complejo ya que no tienes interfaz gráfica para verificar lo que vas haciendo (esto mismo es uno de los puntos que los hace más liviano y rápido) y realmente no sé muy bien qué quieres hacer ni conozco más que lo que inidicas que no te funciona (que no es mucho). En todo caso, quizás esto te pueda servir como punto de partida:

Sub loginWinHttp()

Dim objWinHttpRequest As Object

Set objWinHttpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")

objWinHttpRequest.Open "POST", "http://200.25.197.138:7778/axis/login/gep_login.jsp"
objWinHttpRequest.send "user=tal&password=pascual" ' tienes que buscar la cadena que se envia cuando se hace la solicitud, debe ser algo así

Debug.Print objWinHttpRequest.responsetext

End Sub[/CODE]

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



  • Si estás experimentando errores al acceder al foro, te recomendamos que modifiques la contraseña desde aquí (haciendo clic en el enlace "¿Olvidaste tu contraseña?").

    Próximamente  habrá mejoras en la web y es necesario cambiar la contraseña para acceder a los nuevos contenidos.

    Disculpa las molestias.

  • Recently Browsing

    No registered users viewing this page.

  • Latest Best Answers

×
×
  • Create New...

Important Information

Privacy Policy