Foro VBATotal
Aprender a programar en Visual Basic
Macro rellenar formulario web con selenium+chrome
Cita de Sergio en 24 de febrero de 2023, 18:49Buenas!
Una vez más estoy con otra nueva y apasionante aventura, esta vez quiero que desde una hoja de Excel se conecte a varias webs rellenando sus formularios con los valores de las celdas, como Internet Explorer está obsoleto, de momento he encontrado que con el driver selenium se puede hacer sobre Chrome u otro navegador, por lo que he ido viendo hay que localizar los inputbox de las webs con el modo desarrollador , localizarlas desde vba y guardarlas en una variable e indicarle los valores para que rellene los formularios, tampoco he encontrado mucho contenido por internet para hacer esto con vba, para phyton si que hay y sinceramente esto ya me queda muy muy grande así que @administrador te lanzó el guante ;😉 para que si te parece bien hagas una máster class sobre esto en el curso y así aprendemos
Aprovecho para felicitarte por esta maravillosa iniciativa y darte las gracias por toda la sabiduría que compartes con los que seguimos tus publicaciones
Buenas!
Una vez más estoy con otra nueva y apasionante aventura, esta vez quiero que desde una hoja de Excel se conecte a varias webs rellenando sus formularios con los valores de las celdas, como Internet Explorer está obsoleto, de momento he encontrado que con el driver selenium se puede hacer sobre Chrome u otro navegador, por lo que he ido viendo hay que localizar los inputbox de las webs con el modo desarrollador , localizarlas desde vba y guardarlas en una variable e indicarle los valores para que rellene los formularios, tampoco he encontrado mucho contenido por internet para hacer esto con vba, para phyton si que hay y sinceramente esto ya me queda muy muy grande así que @administrador te lanzó el guante ;😉 para que si te parece bien hagas una máster class sobre esto en el curso y así aprendemos
Aprovecho para felicitarte por esta maravillosa iniciativa y darte las gracias por toda la sabiduría que compartes con los que seguimos tus publicaciones






Cita de Administrador en 1 de marzo de 2023, 08:25Hola Sergio!
Es algo que no he hecho nunca...pero nunca es tarde!
Dime alguna web con formulario para hacer pruebas 🙂
Hola Sergio!
Es algo que no he hecho nunca...pero nunca es tarde!
Dime alguna web con formulario para hacer pruebas 🙂
Cita de Sergio en 1 de marzo de 2023, 17:05Buenas!
Esta tiene buena pinta, tiene de todo y el código parece claro, por lo menos al inspeccionarlo pone claramente los campos que por lo que he visto en otras es un logro, adjunto recorte
https://familia.jcyl.es/web/es/mujer/formulario-buenas-practicas.html
Y aquí explican muy bien para instalar y configurar Selenium
https://excelcute.com/vba-data-scraping-selenium/
Gracias por todo!!
Buenas!
Esta tiene buena pinta, tiene de todo y el código parece claro, por lo menos al inspeccionarlo pone claramente los campos que por lo que he visto en otras es un logro, adjunto recorte
https://familia.jcyl.es/web/es/mujer/formulario-buenas-practicas.html
Y aquí explican muy bien para instalar y configurar Selenium
Gracias por todo!!
Archivos subidos:
- Tienes que conectarte para acceder a las subidas.






Cita de Administrador en 2 de marzo de 2023, 08:33Gracias Sergio.
Cuando termine un par de proyectos me pongo con esto. Te pido paciencia 😉
Saludos.
Gracias Sergio.
Cuando termine un par de proyectos me pongo con esto. Te pido paciencia 😉
Saludos.
Cita de sanguindangui en 22 de marzo de 2023, 12:33Buenos días. Ante todo pido perdón por si cometo un error ya que no soy experto.
Después de muchas pruebas he conseguido automatizar tareas con vba y chrome. Para esto es necesario instalar SeleniumBasic
https://github.com/florentbr/SeleniumBasic/releases/download/v2.0.9.0/SeleniumBasic-2.0.9.0.exe
Al instalarlo nos fijamos en la ruta donde queda instalado. Ahí tendremos que pegar el driver descomprimido (en este caso versión 111.0 de chrome)
https://chromedriver.storage.googleapis.com/111.0.5563.64/chromedriver_win32.zip
En el editor de visualbasic, Herramientas, Referencias, marcar Selenium Type Library
El código de vba quedaría parecido a esto:
'********************************************************************
Dim hacienda As String 'formulario que voy a rellenar, modelo 046 de hacienda Castilla La Mancha
hacienda = "https://modelos-tributos.jccm.es/webgreco/modelos/jsp/cumplimentacion/GreJspModelo046_2012_P.jsp"
Dim dia As String 'esta variable la utilizaremos para insertar el día de la fecha
dia = Day(Date)
Dim driver As New WebDriver
Set driver = New Selenium.ChromeDriver
'El formulario tiene un textbox llamado fechaDevengoDia dónde insertaremos el día.
driver.FindElementByName("fechaDevengoDia").SendKeys dia
'Si se trata de una lista desplegable llamada selectCentro, para seleccionar Agricultura, debemos enviar el valor AG. Esto lo vemos en el código fuente de la página
Dim sele1 As Selenium.SelectElement
Set sele1 = driver.FindElementByCss("#selectCentro").AsSelect
sele1.SelectByValue "AG"'Si el formulario tiene un botón llamado btnCumplimentar que tenemos que clicar
driver.FindElementByCss("#btnCumplimentar").Click
driver.Close
Espero haberte ayudado, aunque sea un poquito.
Buenos días. Ante todo pido perdón por si cometo un error ya que no soy experto.
Después de muchas pruebas he conseguido automatizar tareas con vba y chrome. Para esto es necesario instalar SeleniumBasic
https://github.com/florentbr/SeleniumBasic/releases/download/v2.0.9.0/SeleniumBasic-2.0.9.0.exe
Al instalarlo nos fijamos en la ruta donde queda instalado. Ahí tendremos que pegar el driver descomprimido (en este caso versión 111.0 de chrome)
https://chromedriver.storage.googleapis.com/111.0.5563.64/chromedriver_win32.zip
En el editor de visualbasic, Herramientas, Referencias, marcar Selenium Type Library
El código de vba quedaría parecido a esto:
'********************************************************************
Dim hacienda As String 'formulario que voy a rellenar, modelo 046 de hacienda Castilla La Mancha
hacienda = "https://modelos-tributos.jccm.es/webgreco/modelos/jsp/cumplimentacion/GreJspModelo046_2012_P.jsp"
Dim dia As String 'esta variable la utilizaremos para insertar el día de la fecha
dia = Day(Date)
Dim driver As New WebDriver
Set driver = New Selenium.ChromeDriver
'El formulario tiene un textbox llamado fechaDevengoDia dónde insertaremos el día.
driver.FindElementByName("fechaDevengoDia").SendKeys dia
'Si se trata de una lista desplegable llamada selectCentro, para seleccionar Agricultura, debemos enviar el valor AG. Esto lo vemos en el código fuente de la página
Dim sele1 As Selenium.SelectElement
Set sele1 = driver.FindElementByCss("#selectCentro").AsSelect
sele1.SelectByValue "AG"
'Si el formulario tiene un botón llamado btnCumplimentar que tenemos que clicar
driver.FindElementByCss("#btnCumplimentar").Click
driver.Close
Espero haberte ayudado, aunque sea un poquito.
Cita de sanguindangui en 23 de marzo de 2023, 09:31Perdón, se me había olvidado después de
Set driver = New Selenium.ChromeDriver
driver.Get hacienda
Perdón, se me había olvidado después de
Set driver = New Selenium.ChromeDriver
driver.Get hacienda






Cita de Administrador en 23 de marzo de 2023, 10:10Muchas gracias por tu aporte @sanguindangui 😉
A ver si @sergio lo prueba y nos cuenta.
Muchas gracias por tu aporte @sanguindangui 😉
A ver si @sergio lo prueba y nos cuenta.
Cita de Duniesky en 17 de abril de 2023, 20:09Hola, estoy intentando rellenar un formulario Chrome y el aporte de @sanguindangui me sirvió de mucho, Lo adapté a mi caso y me quedó así:
Sub RellenarFormChrome()
Dim PagChrome As String
Dim driver As New WebDriver
Dim Nombre As String
Dim Correo As String
Dim Telefono As String
PagChrome = "https://excelcute.com/formulario-de-video-youtube/"
Set driver = New Selenium.ChromeDriver
driver.Get PagChrome
Nombre = "Duniesky"
Correo = "duniesky.bermudez@etecsa.cu"
Telefono = "+5352884420"
Call Excel.Application.Wait(DateAdd("s", 15, Now()))
driver.FindElementByName("g5154-nombre").SendKeys Nombre
driver.FindElementByName("g5154-correoelectrnico").SendKeys Correo
driver.FindElementByName("g5154-nmerodetelfono").SendKeys Telefono
Dim sele1 As Selenium.SelectElement
Set sele1 = driver.FindElementByCss("#g5154-cmonoshasconocido").AsSelect
sele1.SelectByValue "TV"
Call Excel.Application.Wait(DateAdd("s", 30, Now()))
driver.Close
End Subpero cuando ejecuto, se detiene en la línea marcada en rojo y me describe el error como:
ElementNotVisibleError
element not interactable: Element is not currently visible and may not be manipulated
@sanguindangui o algún otro me pudiera ayudar a resolver este problema.
También si fueran tan amables, me pudieran decir si puedo escribir sobre una página abierta previamente.
Gracias de antemano.
Hola, estoy intentando rellenar un formulario Chrome y el aporte de @sanguindangui me sirvió de mucho, Lo adapté a mi caso y me quedó así:
Sub RellenarFormChrome()
Dim PagChrome As String
Dim driver As New WebDriver
Dim Nombre As String
Dim Correo As String
Dim Telefono As String
PagChrome = "https://excelcute.com/formulario-de-video-youtube/"
Set driver = New Selenium.ChromeDriver
driver.Get PagChrome
Nombre = "Duniesky"
Correo = "duniesky.bermudez@etecsa.cu"
Telefono = "+5352884420"
Call Excel.Application.Wait(DateAdd("s", 15, Now()))
driver.FindElementByName("g5154-nombre").SendKeys Nombre
driver.FindElementByName("g5154-correoelectrnico").SendKeys Correo
driver.FindElementByName("g5154-nmerodetelfono").SendKeys Telefono
Dim sele1 As Selenium.SelectElement
Set sele1 = driver.FindElementByCss("#g5154-cmonoshasconocido").AsSelect
sele1.SelectByValue "TV"
Call Excel.Application.Wait(DateAdd("s", 30, Now()))
driver.Close
End Sub
pero cuando ejecuto, se detiene en la línea marcada en rojo y me describe el error como:
ElementNotVisibleError
element not interactable: Element is not currently visible and may not be manipulated
@sanguindangui o algún otro me pudiera ayudar a resolver este problema.
También si fueran tan amables, me pudieran decir si puedo escribir sobre una página abierta previamente.
Gracias de antemano.
Cita de sanguindangui en 18 de abril de 2023, 13:02Hola Duniesky. He probado con FindElementById, FindElementByName, FindElementByTag, FindElementByClass, pero soy incapaz de solucionar el problema, parece más de programación CSS que de VBA. A ver si alguien que maneje CSS nos ayuda.
Hola Duniesky. He probado con FindElementById, FindElementByName, FindElementByTag, FindElementByClass, pero soy incapaz de solucionar el problema, parece más de programación CSS que de VBA. A ver si alguien que maneje CSS nos ayuda.
Cita de Duniesky en 18 de abril de 2023, 15:56Gracias @sanguindangui. He probado todas las formas sin resultados. Por otro lado me sigue quedando la duda, es posible rellenar un formulario de Chrome en una página abierta previamente, es decir que VBA no la abra sino que se conecte a una abierta.
Gracias @sanguindangui. He probado todas las formas sin resultados. Por otro lado me sigue quedando la duda, es posible rellenar un formulario de Chrome en una página abierta previamente, es decir que VBA no la abra sino que se conecte a una abierta.






Cita de Administrador en 19 de abril de 2023, 07:19Pues yo no consigo arrancar el driver de Selenium. Me da error el script.
Pues yo no consigo arrancar el driver de Selenium. Me da error el script.
Archivos subidos:- Tienes que conectarte para acceder a las subidas.
Cita de sanguindangui en 19 de abril de 2023, 08:21La versión de chrome es la misma que el driver?
La versión de chrome es la misma que el driver?
Archivos subidos:
- Tienes que conectarte para acceder a las subidas.






Cita de Administrador en 19 de abril de 2023, 09:28Si, la misma
Si, la misma