Enviar Whatsapp desde VBA Excel.

En vísperas de enviar todos los buenos deseo para el nuevo año, hoy les dejo un aporte en fase beta de como enviar mensajes de Whatsapp desde VBA Excel usando una tabla ligera y un mensaje uniforme.

El libro esta disponible para su descarga aquí.

1. Antes de Iniciar.

Para que el código funcione de manera adecuada debes tener instalado el buscador Google Chrome en tu PC y ya haber activado Whatsapp Web previamente. Si gustas revisar como hacer eso presiona aquí y sigue las instrucciones que la pagina envía.

2. El libro de trabajo.

Una vez realizado los pasos de arriba, llena la casilla de mensaje (la celda A2) con lo que sea que quieres enviar.

Whatsapp VBA Excel 1

Ahora, completa la tabla con los números de teléfono a los cuales quieres enviar el mensaje. La casilla de nombre solo es para que sepas de quien es el numero jejeje (el orden, ya saben).

Whatsapp VBA Excel 2

Todo esta listo. Presiona el botón de Enviar Whatsapp y mira la delicia de cómo trabaja.

3. La macro.

Por el momento no he encontrado una mejor manera de que funcione que dándole las indicaciones mediante el teclado, por lo que una vez que la macro inicie, veras que aparece un mensaje como el siguiente:

Whatsapp VBA Excel 1

No presiones si hasta que tu Chrome termine de cargar la aplicación Whatsapp y, una vez presiones si, corre a poner tu Chrome en primer plano de tu computadora (o lo que es lo mismo selecciónalo de la barra de tareas).

Whatsapp Web

Es importante no presionar nada, deja que la macro haga su magia buscando el número, escribiendo el mensaje y terminando.

El código lo puedes encontrar más abajo (Muchas gracias a Cristiano por la actualización del codigo).

Sub wapp_texting()
 'Declaracion de variables
 Dim text, contact As String ' Variables de envio
 Dim i As Long 'Variable de itinerancia
 Dim ws As Worksheet ' Variable de hoja de calculo
 Dim wapp As Variant ' Variable de Applicacion
 Set ws = Sheets("WAPP MENSAJERIA")
 If Application.WorksheetFunction.CountA(ws.Range("B5:B1000000")) = 0 Then
     MsgBox "No hay numeros para enviar mensajes", vbOKOnly
     Exit Sub
 End If
 text = ws.Range("A2").Value
 If text = "" Then
     If MsgBox("No ha introducido ningun mensaje. Quiere introducir uno ahora?", vbYesNo, "NO HAY MENSAJE PARA ENVIAR") = vbYes Then
         text = InputBox("Introduzca el mensaje", "MENSAJE A ENVIAR")
     Else
         MsgBox "No se ha podido enviar el mensaje"
         Exit Sub
     End If
 End If
 'Abre Chrome en la ventana de whatsapp web
 Shell ("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe -url https://web.whatsapp.com/") 'Cambiar esta linea si es necesario para encontrar Chrome
 If MsgBox("Presione Si cuando Whatsapp este totalmente cargado y tenga activo Chrome todo el tiempo." & vbNewLine & vbNewLine & "Presione no si Whatsapp no abre en un tiempo considerable", vbYesNo, "Cargando Whatsapp") = vbNo Then
     MsgBox "No se envio nada…"
 Else
     ' Inicia a cargar los mensajes
     Espera (6000)
     i = 0
     Do Until ws.Range("B5").Offset(i, 0) = ""
         Espera (3000)
         contact = ws.Range("B5").Offset(i, 0).Value
         Call SendKeys("{TAB}", True) ' Entra a la barra de busqueda
         Espera (2000)
         Call SendKeys(contact, True) ' Busca el numero de telefono
         Espera (2000)
         Call SendKeys("~", True) ' Entra a la barra de mensajes
         Espera (1000)
         Call SendKeys(text, True) ' Escribe el mensaje
         Espera (1000)
         Call SendKeys("~", True) 'Envia el mensaje
         Call SendKeys("{TAB}", True) ' Entra a la barra de busqueda
         Espera (1000)
         Call SendKeys("{TAB}", True) ' Entra a la barra de busqueda
         Espera (1000)
         Call SendKeys("{TAB}", True) ' Entra a la barra de busqueda
         Espera (1000)
         Call SendKeys("{TAB}", True) ' Entra a la barra de busqueda
         i = i + 1
     Loop
 MsgBox "Mensajes Enviados!" & vbNewLine & vbNewLine & "Revisa tu whatsapp para comprobar los resultados", vbOKOnly, "Fin del procedimiento"
 Set ws = Nothing
 End If
 End Sub
 Function Espera(ByVal tiempo As Double)
 ' Espera en milisegundos
 Application.Wait (Now() + tiempo / 24 / 60 / 60 / 1000)
 End Function

Para que la aplicación espere se usa esta función.

Function Espera(ByVal tiempo As Double)
' Espera en milisegundos
Application.Wait (Now() + tiempo / 24 / 60 / 60 / 1000)
End Function

4. Su uso.

Esta macro puede servirte para enviar muchos mensajes en poco tiempo. Según el código de arriba puedes cambiar los tiempos de espera para poder hacerlo más veloz, aunque según mis test ese tiempo es idóneo para cualquier conexión de internet.

Adicional, asegúrate de que la opción del Shell este direccionando bien a la carpeta donde este guardado Chrome, de otra forma recibirás un mensaje de error o hará locuras.

Si quieres ver otra forma de envíar Whatsapp desde VBA Excel, puedes checar esta entrada tambíen.

Aun la estoy probando por lo que si tienes algún consejo nos vemos en la caja de comentarios. Feliz inicio de ciclo anual para todos.

Enviar Whatsapp desde VBA Excel.

39 comentarios en «Enviar Whatsapp desde VBA Excel.»

  1. Verdade a planilha envia somente o primeiro.
    Eu adicionei esta linha ai deu certo.
    Call SendKeys(«{TAB}», True) ‘ Entra a la barra de busqueda
    Espera (2000)
    Mas agradeço muito ao autor da planilha, esta muito boa, com este TAB a mais ela volta no campo de pesquisa.
    Um grande abraço

  2. Hola, buenas tardes, tengo un problema, solo se envia el mensaje al primer contacto y despues se les envia los numeros que estan debajo del primer numero. Gracias por su ayuda.

  3. hola miuy buenas, y gracias por compartirlo. en mi caso funciona etc….es decir abre whatsappweb, pero en mi caso no envia el mensaje, es decir no llega ami whatsaap
    creo que puede ser porque utilizo el whatsapbussines. hare pruebas y te indico. gracias

    1. Hola David.
      Tienes instalado Chrome en la carpeta Program Files(x86) en tu computadora?
      Revisa la carpeta que viene marcada ahí y asegurate que Chrome se encuentre en esa ruta.
      De no ser así, cambia la ruta de acceso a Chrome segun tu computadora.

      Saludos!

  4. Hola!!

    Me encanta la macro, pero algo no debo estar haciendo bien, ya que envía correctamente al primer número pero el cursor se queda en en la casilla para escribir el mensaje a ese número y empieza a poner ahí y enviar el siguiente teléfono y el texto, el teléfono envía y luego el texto, todos los mensajes al primer destinatario.

    ¿Como puedo subsanar esto?

    Un saludo,

  5. Hola !!

    Excelente trabajo, solo tengo un problema. Cuando la intento correr me aparece un error en el compilador marcandome la linea de ESPERA (6000). El mensaje dice ERROR DE COMPILACIÓN NO SE HA DEFINIDO SUB O FUNCTION.

    ¿Me podrias ayudar?

    rGracias, saludos.

  6. Buenas
    Solo me permite enviar mensajes a números con los que en algún momento he tenido chat, cual sería la opción para enviar a cualquier número.

    1. Hola George.
      Así es, solo te permitirá enviar mensajes a gente con la que has chateado anteriormente por cuestiones de seguridad de Whatsapp.
      No existe por el momento forma de enviar mensajes a cualquier número debido a restricciones de Spam.
      Saludos.

      1. Mi estimado Amigo cachareando la Web me tope con esta otra herramienta que realizó otro terrícola inteligente como usted, y tal vez podría servirte de utilidad para añadirle más funcionalidad a tu Macro por ejemplo que envíe el mensaje a cualquier número.

        https://youtu.be/3QPR-1MTj3U

        Gracias por compartir el conocimiento eres un Astro.

      2. Si se puede tienes que usar la app de whatsapp y para que no te detecten como espan. Lo subes tus contactos en forma masiva a tus contactos de google

    1. Hola Nestor.
      Por el momento es imposible. La única solución viable seria guardar el archivo en alguna nube (p.e. Gdrive) y enviar el enlace de descarga del archivo para que la otra persona pueda descargarlo.
      Con las API de paga me parece que es posible, solo habría que confirmar cual tienes para poder darte más información 😀

      1. Pero no sería posible hacerlo utilizando sendkeys, para que mediante TAB acceda a la selección de archivo, y después utilice el valor de una celda para escribir la dirección del archivo más el archivo y por último confirmar la elección con Enter y al final enviar el archivo?

        1. ¡Hola Alejandro!
          Desafortunadamente no, los TABS solo te permiten ciertas acciones en la página y en la app.
          Al menos en las pruebas que hice no llegas a tocar la opción de selección de archivo.
          Tal vez con Selenium sea posible o un UI de Automates, pero lo mas seguro seria vía API.
          ¡Saludos!

          1. Es cierto, lo probé después de forma manual y sólo pasa por el menú izquierdo y por el chat. ¡Gracias!

  7. Muy bien, funciona bien hasta que tiene que acceder a la barra de búsqueda y enviar el mensaje, el numero de teléfono y el mensaje lo pone en la celda que tenia activa en excel……

  8. Hola. Excelente trabajo. Está idea puede expandirse y seguir desarrollandose. Por ejemplo que en vez de enviar un mensaje ne la barra de busqueda, que sea un mensaje whatsApp de un contacto a otro.

  9. Funciona muy bien, me parece un desarrollo excelente…

    * Me gustaría saber si pudieras hacer que envie un objeto OLE (una imagen en sí)
    * ¿Crees que se pueda hacer correr desde la app de escritorio? A lo que voy es que es más rápida que Chrome y usa menos recursos de la computadora

    1. ¡Hola Antonio!
      1. Para agregar cualquier desarrollo adicional u objeto se requiere de una API de paga. Con xlwings y el API quedaría excelente.
      2. Desde la App de escritorio seguro es posible, no creo que se requiera de Chrome en realidad, pero es más común que tengan instalado eso que la app de Whatsapp.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll hacia arriba