ENVIAR DATOS DESDE EXCEL A UNA PAGINA WEB – FORMULARIO

Hola a todos:

Hace unos días me enviaban una consulta sobre cómo podían enviar a través de Excel datos para introducir valores en un formulario web. Aunque la respuesta ya la adelanté en esta web me ha parecido interesante publicarla en una entrada.

Para poder realizar el trabajo debemos usar VBA y para ello es necesario que tengamos en cuenta algunos aspectos de la página web en cuestión y los elementos que vamos a necesitar para poder realizar la consulta.

Como ejemplo voy a utilizar mi web, de manera que mediante  código sea capaz de ingresar en su cuadro de búsqueda un valor, por ejemplo: “API” y que realice la búsqueda. Es decir, que sea capaz de enviar datos a una web, la mía,  y a un cuadro de texto (parecido a un formulario) y generar la búsqueda.

Para ello, vamos a utilizar la siguiente macro:

Sub CARGAR_DATOS_WEB()
Dim IE 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 ID que hace referencia al cuadro de búsqueda
'esto lo hacemos buscando en el código HTML de la página web
'e igualamos el valor de la celda para realizar la búsqueda
IE.document.getElementById("s").Value = "API" '
'también buscamos ID correspondiente al botón para buscar el valor
IE.document.getElementById("searchsubmit").Click
'hacemos visible la web.
IE.Visible = True
Set IE = Nothing
Application.ScreenUpdating = True
End Sub

Como podéis observar, es de gran importancia que seamos capaces de identificar los ID´s de cada uno de los elementos, es decir, del buscador y del botón para realizar la búsqueda.

Esto lo podemos hacer de varias formas, o bien rastreamos el código HTML de toda la web o bien nos posicionamos encima del buscador y pulsamos botón derecho:

enviar-datos-desde-excel-a-una-pagina-web_formulario1

y se abrirá la ventana de inspección con el ID o Name que necesitamos:

enviar-datos-desde-excel-a-una-pagina-web_formulario

Como podéis ver Para el buscador el ID es “s” y para el botón de búsqueda el procedimiento será idéntico.

Una vez que tenemos los ID´s ya podemos introducirlos en la macro y ejecutarla, el resultado que esperamos es ver una búsqueda de la palabra “API” en Excel Signum, es decir, esto:

enviar-datos-desde-excel-a-una-pagina-web_formulario2

Obviamente si hablamos de un formulario web, tendremos que identificar el elemento adecuado, si se trata de un ID o un Nombre y realizar tantas referencias como sean necesarias.

Esta vez no pondré archivo de descarga, el motivo es que no es necesario, tan solo hay que copiar la macro en un módulo, adaptarla y ejecutarla.

Espero que os sea de utilidad 🙂

8 pensamientos en “ENVIAR DATOS DESDE EXCEL A UNA PAGINA WEB – FORMULARIO

    • Hola Leo:

      Con name sería así:

      Sub CARGAR_DATOS_WEB()
      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
      'esto lo hacemos buscando en el código HTML de la página web
      'e igualamos el valor de la celda para realizar la búsqueda
      Set document = IE.document
      With document
      .getElementsByName("s")(0).Value = "API"
      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

      Me gusta

  1. Pingback: ENVIAR DATOS DESDE EXCEL A UNA PAGINA WEB (CLASSNAME, NAME) | EXCEL SIGNUM

  2. estoy intentando con una macro rellenar unos campos de un formulario web esta pagina web http://www.cortefilme.com.br/mapa.html tiene una parte en HTML y otra en flash los datos que tengo que rellenar son de la parte en flash, por lo que había pensado es ir aun campo HTML y después con sendkey y TAB acceder a los campos en flash , cuando lo hago manualmente me funciona bien, pero cuando lo hago a través de la macro en lugar de ir al primer campo flash se va a la barra de direcciones de internet explorer.
    Os adjunto el código por si hay alguien que me puede ayudar(soy novato en vba)

    Muchas gracias

    Sub lamina152()

    ‘ lamina152 Macro

    Dim IE As Object
    Dim CeldaActual As Range

    Set CeldaActual = ActiveCell
    Set IE = CreateObject(“InternetExplorer.application”)

    URL = “http://cortefilme.com.br/mapa.html”

    IE.Navigate URL
    IE.Visible = True

    Do

    DoEvents

    Loop Until IE.readystate = 4

    ‘Application.Wait (Now() + TimeValue(“00:00:06”))

    IE.document.getelementbyid(“aemail”).Select

    Call SendKeys(“1”, True)
    ‘Application.Wait (Now() + TimeValue(“00:00:01”))
    Call SendKeys(“{TAB}”, True)
    Call SendKeys(“{TAB}”, True)

    Call SendKeys(“222”, True)

    End Sub

    Me gusta

  3. Hola Luis:

    En la parte flash no voy a entrar, porque no he programado vba con flash. Sobre lo otro, la forma de pasar información desde Excel a un formulario es como te indico en el post. Por ejemplo, para tu consulta, por ID se pueden completar todos los campos de cuadros de texto (nombre, email, etc, etc). NO hace falta usar combinación de teclas (que siempre dan problemas en VBA).

    Utiliza el .click para pulsar el botón de envío (indicando previamente su id).

    IE.document.getElementById("nome").Value = "alejandro" '
    IE.document.getElementById("email").Value = "mi@correo.com"
    IE.document.getElementById("anome").Value = "miamigo"
    IE.document.getElementById("aemail").Value = "su@correo.com"
    'también buscamos ID correspondiente al botón para buscar el valor
    IE.document.getElementById("bt_enviar").Click

    Saludos.

    Me gusta

  4. Buenas tarde estimado, y si en la pagina en cuestión se quiere adjuntar un archivo, por ejemplo.
    IE.document.getElementById(“buttonAdd”).Click
    En la pagina se abre la ventana para adjuntar un archivo, pero no se bien que proceda, me imagino hay que poner la ruta del archivo en excel, pero desconozco como, me podras apoyar?

    Me gusta

¿Te ha gustado?, Realiza un comentario.

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .