Hola a todos! Qué tal estáis?, espero que muy bien.
Hace unos días un lector me hacía la siguiente consulta en relación a este post: ENVIAR DATOS DESDE EXCEL A UNA PAGINA WEB – FORMULARIO, necesitaba realizar el mismo ejercicio pero utilizando la propiedad «Name» en lugar del ID. (podéis visitar el post para ver el código de referencia).
Pues bien, en realidad los cambios que hay que hacer en la macro son pocos. En el ejercicio, mediante VBA enviamos al formulario de búsqueda de Excel Signum una palabra y desde el código ejecutamos la búsqueda y mostramos el resultado. Para hacerlo con la propiedad Name, debemos identificar los elementos a incluir en nuestra macro:
Como estamos trabajando con Name, tendremos que detectar los elementos necesarios para nuestro código, en este caso: name=»s» para indicar el contenido en buscador y «submit» para hacer click o ejecutar la búsqueda.
Así quedaría el código:
Sub CARGAR_DATOS_WEB_ByName()
Dim IE As Object
Dim document As Object
Application.ScreenUpdating = False
'Creamos objeto internet explorer
Set IE = CreateObject("InternetExplorer.Application")
'abrimos web
IE.navigate "https://excelsignum.com/"
'esperamos a que se carguen todos los elementos
Do Until IE.ReadyState = 4
DoEvents
Loop
'si necesitamos más tiempo lo podemos configurar aquí
Application.Wait (Now + TimeValue("0:00:01"))
'localizamos el name que hace referencia al cuadro de búsqueda
Set document = IE.document
With document
.getElementsByName("s")(0).Value = "ACCESS"
End With
'también buscamos "name" correspondiente al botón para buscar el valor
With document
.getElementsByName("submit")(0).Click
End With
'hacemos visible la web.
IE.Visible = True
Set IE = Nothing
Application.ScreenUpdating = True
End Sub
Como podéis observar identificamos el name (s) para indicar que el valor de la búsqueda sea «ACCESS»
.getElementsByName("s")(0).Value = "ACCESS"
y ejecutamos la búsqueda haciendo referencia al botón «Buscar»
.getElementsByName("submit")(0).Click
Este es el resultado:
Efectivamente, desde Internet Explorer se mostrará el resultado de la búsqueda con la palabra «ACCESS» en Excel Signum.
Pero aprovechando que estamos tratando las propiedades ID y Name, podemos también realizar el mismo código con ClassName.
Sub CARGAR_DATOS_WEB_ByClassName()
Dim IE As Object
Dim document As Object
Application.ScreenUpdating = False
'Creamos objeto internet explorer
Set IE = CreateObject("InternetExplorer.Application")
'abrimos web
IE.navigate "https://excelsignum.com/"
'esperamos a que se carguen todos los elementos
Do Until IE.ReadyState = 4
DoEvents
Loop
'si necesitamos más tiempo lo podemos configurar aquí
Application.Wait (Now + TimeValue("0:00:01"))
'localizamos el ClassName que hace referencia al cuadro de búsqueda
Set document = IE.document
With document
.getElementsByClassName("field")(0).Value = "ACCESS"
End With
'también buscamos "ClassName" correspondiente al botón para buscar el valor
With document
.getElementsByClassName("submit")(0).Click
End With
'hacemos visible la web.
IE.Visible = True
Set IE = Nothing
Application.ScreenUpdating = True
End Sub
El resultado es exactamente el mismo que con el código anterior. Y de esta forma ya podéis realizar el mismo ejercicio con el ID, el Name y el ClassName.
Obviamente existen otras formas de realizar estas programación, y es utilizando otros objetos en lugar en I.E. no obstante, eso lo iremos viendo en próximas publicaciones.
Espero que os resulta de interés : )
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies