Macro para hacer login en una web y consultar datos

Estoy necesitando programar en Excel para hacer consultas en una pagina web que posee login.

La dirección de la página es https://bcp003.bcp.gov.py/bcp/ 

Esta es la ventana de login:

Necesito que mediante los datos ingresados en una celda del libro, Excel haga una consulta automática a la página web y en otras celdas me devuelva los valores que resulten de la misma.

A continuación un print de la página de consulta:

Obs.: Al logearme en la página, esta pantalla no es la primera que se muestra, sino que se debe dar click en "Automotor"

La ventana donde necesito que Excel consulte una información es en "Chapa", los resultados que arroja la página se ven así:

El dato que necesito que Excel me devuelva en otra celda es el de "Año del cert.:", o sea para este ejemplo 2016, no obstante si todos los datos puede traerme Excel, será mucho mejor.

1 respuesta

Respuesta
2

Para obtener datos de una web que previamente requieren usuario y contraseña, si deseas hacer consultas de dichos datos, lo ideal es hacer la "consulta" (ADO y SQL) directamente a la base de datos, para lo que debes tener los parámetros necesarios, lo que normalmente no se tiene cuando no es una web propia.

Para casos como el tuyo ¿es posible que Excel, usando VBA, envíe datos a formularios, haga "click" a botones y luego extraiga datos de la web? La respuesta es sí y no.

Sí, porque de ser una web abierta se pueden ver/saber el nombre de los objetos e intentar controlarlos (aunque entre mejor es la tecnología cada vez es más difícil hacerlo y hay casos en que ya no se puede) .

No, porque en casos como el tuyo no es posible acceder de modo directo a la web. Cuando pongo este enlace en mi navegador:

https://bcp003.bcp.gov.py/bcp/ 

La web no carga, quizá porque previamente hay un sistema de usuario/contraseña que tienes que ingresar ¿es así?

Comentas

Abraham Valencia

Hola Abraham,

En realidad al ingresar la dirección en mi navegador me dirige directo a la página donde debo loguearme para poder hacer la consulta. 

He probado con tres navegadores distintos y con dos operadores que brindan servicio de internet aquí en Perú y en todos los casos la página no carga. Igual por el dominio parece que es una página de Intranet no de internet ¿accedes solo desde tu trabajo? ¿Has accedido desde algún otro lugar? ¿No será que realmente sí es de Intranet?

Si tienes internet en tu celular, y no has accedido nunca desde ahí a esa página, intenta hacerlo sin estar conectado al Wi Fi. Comentas

Abraham Valencia

Abraham,

Efectivamente desde el celular no puedo ingresar. No es una intranet, pero si una página que solo habilita a ciertas máquinas. EN ese caso, sería factible que me ayudes con la macro pero usando otra web a modo de ejemplo? Así yo luego trato de replicarla con la página abierta.

Gracias

Lo primero es averiguar los nombres de los "textbox" de dicha página web, los cuales puedes obtener a través, por ejemplo, DreamWeaver o ASP.NET o alguno similar. Luego debes activar las referencias a "Microsoft Intenet Controls" e intentar algo así:

Sub xxxxxxxx()
Dim ie As Object
Set ie = New InternetExplorer
Ie. NAVIGATE " https://www.sunat.gob.Pe/cl-at-itmenu/menuS01Alias " 'Cargamos la web que deseamos navegar
While ie. Busy 
DoEvents 
Wend
ie.Document.all. Item("ruc"). Value = Val(Range("A1")) 
ie.Document.all. Item("cuenta"). Value = Range("A2") 
ie.Document.all. Item("password"). Value = Range("A3")
Ie. Visible = True
Set ie = Nothing
End Sub 

Los nombres de los "textbox", como ves, yo los obtuve con uno de esos programas mencionados, y estoy suponiendo en A1 el RUC, en A2 el usuario y en A3 la clave.
Ah, cierto, para dar el click al botón, algo así seria:
ie.document.all("nombreboton"). Click
Cuestión de que te fijes el nombre del botón. OJO, ese ejemplo que te he colocado es antiguo, creo que ya cambiaron esa web, pero igual lo dejo para que te des una idea. Otra cosa, no en todas las webs se puede lograr o lograr fácilmente.
Abraham Valencia

Hola Abraham,

Entiendo que la macro que me muestras sería para loguearme, pero eso sería el primer paso, ya que quisiera hacer poder mediante los datos en una celda, que realice una consulta y que me devuelva el resultado en otra celda, sería posible?

Se aplica los mismo, debes obtener el nombre del objeto en donde se "alojan" los resultados de tu consulta y luego los extraes usando su propiedad "InnerText". Mira, justo hemos hecho algo así ha un rato:

Extraer datos de una página WEB

Comentas

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas