Autorrellenar Formulario Web Html desde Excel (Web form filling)

En este artículo vamos a ver cómo podemos rellenar un formulario web html desde Excel. En teoría es muy simple con el método “GetElementByID”, posible de utilizar en VBA.

Básicamente tenemos un formulario web, caracterizado por contener elementos, textbox’s (cuadro de textos), Combobox’s (cuadro de listas), ChekButton’s (botones de selección), y siempre hay un botón Aceptar, Enviar, Submit, etc., que envía, guarda o hace algo con los datos cargados.
Lo único que vamos a mostrar es cómo interpretar los datos necesarios en el código HTML para luego mediante un script (código) en Excel, desde la plataforma VBA, poder rellenarlo y enviarlo.
La utilidad de esto es relativa ya que últimamente es difícil encontrar un formulario que no contenga un código CAPTCHA o  de verificación  para ver que es una persona la que rellena el formulario y no una máquina (o un robot). Sin embargo en otro artículo mostraremos la utilidad que puede tener con Google Docs.


Click en la imagen para ver el video relacionado sino a través de este Link.


Recuerden que en el canal de YouTube “ExcelminiApps” están todos los videos que son complento del blog.

Como hacemos siempre vamos a utilizar una mini aplicación de ejemplo para mostrar la idea.
Básicamente tenemos un formulario web que queremos rellenar, en este caso vamos a utilizar el de “Crear Cuenta en Gmail” ya que nos permite mostrar el objetivo propuesto. Además contiene los elementos necesarios.
El formulario en cuestión tiene varios campos pero en este caso vamos a remitirnos a dos porque es un ejemplo, y al botón enviar o aceptar que en este caso se llama “siguiente”.



Los datos que necesitamos son los ID’s que  son nombres o strings únicos en el código que representan a cada elemento. Debemos identificar en este caso tres, el que corresponde al “nombre”, el que corresponde al “apellido” y el que corresponde al botón “siguiente”.
En realidad para hacer esto no hay que saber leer el código ni nada, podemos usar las “herramientas de desarrollador” que nos ofrece el explorador. En este caso es Internet Explorer pero para las nuevas versiones de Windows es “Edge”.


Una vez que tenemos abierta la herramienta, con el cursor buscando el elemento que queremos identificar, lo señalamos y revisamos la información que necesitamos.



Como ven también tenemos todas las propiedades del elemento, en este caso solo nos importa el id. Que en este caso esta identificado en la línea sombreada con rojo como “firstname”.
Para el caso del apellido  con el mismo procedimiento encontramos que el id es “lastname” y para el caso del boton es “submitbutton”.



Con esta información ya podemos crear el script o codigo en excel.

Procedimiento
Nuestros datos son:
·         Caja de Texto de “Nombre”  id: firstname
·         Caja de Texto de “Apellido” id: lastname
·         Boton “siguiente” id: submitbutton

Código
El código de la macro sería el siguiente, en este caso definimos las variables directamente en el código, es decir, el nombre “juan”, el apellido “pablo”, pero podemos utilizar todas las posibilidades que nos da excel, obtener los datos de una celda, de un formulario, de una base de datos, etc.

INICIO CODIGOS----------------------------------------
Sub RellenarFormWEB()
'www.excelminiapps.com
'Este codigo sirve para rellenar un formulario web con el methodo GetElement
Dim IE As Object
'creamos el objeto para el navegador Internet Explorer
Set IE = CreateObject("InternetExplorer.application")
'dentro del navegador de internet explorer, accedemos a la página donde esta el formulario HTML
'en la celda D5 esta la dirección
IE.Navigate “https://accounts.google.com/SignUp”
Do
DoEvents
Loop Until IE.readystate = 4 'verifico si cargo correctamente la página
  'Completo los elementos del formulario por ID
IE.Document.getElementById("FirstName").Value = “Juan”
IE.Document.getElementById("LastName").Value = “Pablo”
'Ahora ubico el boton de submit o enviar, en este caso:
IE.Document.getElementById("submitbutton").Click
  'finalmente hacemos visible la ventana de Internet Explorer
IE.Visible = True
 End Sub
------------------------------------------------------
Este código rellena solo los campos de nombre y apellido pero como no rellena el resto de los campos, al ejecutar la macro nos mostrara un error:


Si podemos mostrar la imagen de CAPTCHA también desde Excel el usuario podría introducir este elemento.
¡Esperamos que les haya gustado la idea y vean lo fácil que es!
-------------------------------------- FIN CÓDIGOS

Recuerden que los artículos algunas veces requieren un mayor o menor nivel de conocimiento en ciertos temas de Excel, por ejemplo formulas avanzadas, macros o VBA, etc. Sin embargo en los artículos se nombran todos los elementos y con esta información podemos hacer nuestras pequeñas investigaciones usando internet, así desarrollamos nuestro conocimiento. Por ejemplo si  utilizamos la función “Y”, que la suponemos conocida, y no sabemos ¿qué es? podemos buscar en internet para ver como se utiliza y cuáles son los componentes. Las mini aplicaciones no son más que la recopilación de muchos elementos para dar forma a una nueva idea.

Pueden descargar algunos ejemplos (plantillas/templates) de la zona de Descargas. Si tienen alguna duda o consulta pueden hacerlo a través del formulario de contacto.
Les recomendamos que sigan el blog por alguno de los medios, mail o por redes sociales, para recibir las actualizaciones y novedades.
¡Éxitos!

Keys:
·         VBA to Enter Data Online and Submit Form
·         Populate HTML form using Excel/VBA
·         Populate Internet Textbox, Fill Forms, click Submit using Excel
·         Automatic Form Filling using data stored in an Excel file
·         Excel - Populate Html Form Using Excel/vba.
·         Rellenar formulario Web con Excel
·         Rellenar formulario HTML con VBA en Excel.

6 comentarios:

JUAN ALBERTO ARIAS DÁVALOS dijo...

Hola, qué pasa si quiero llenar el formulario de una página que ya está abierta.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! No sé puede con este metodo ya que el código no puede identificar que formulario es sino lo abre e identifica antes de la acción.
Esperamos tus comentarios.
Saludos

JUAN ALBERTO ARIAS DÁVALOS dijo...

Hola, disculpa, pero tu crees que me podrías decir con que método lo podría hacer?, ya que haciendo éste método tengo ciertos límites, como por ejemplo, ventanas emergentes, javascrips, etc.

SIMITI dijo...

Hola, disculpa como hago para que me aparezca la imagen en excel de color azul y el boton buscar

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
Con respecto a tu consulta, si ves otros artículos anteriores del blog seguramente mostramos cómo hacerlo. De otra manera esta dentro de los controles de la pestaña "programación". Saludos

Walter Dorfman dijo...

Muy buena la explicación!
Lo que me falta es como tendría que hacer si quisiera obtener para el ejemplo que explicaste el resultado que dice "no puedes dejar este campo en blanco" del mail y pasarlo a la celda A8 del Excel.
Lo estoy necesitando para otro programita que estoy intentando hacer.
Figura en la pagina de https://accounts.google.com/SignUp
con el id="errormsg_0_GmailAddress"

GRACIAS!!