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.

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).

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:

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).

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.
Buenos dias señor, me sale error 53
Hola.
Error 53 es que no encontró Chrome, checa que tengas Chrome en la url que dice el código o que en su defecto lo tengas instalado.
Saludos!
como coloco la funcion de espera
Hola Eduardo.
Puedes colocarla al final del código de WA o en un nuevo módulo.
Saludos
Te agradecería me la compartieras f.jimenez.65@hotmail.com , Muchas Gracias llevo Bastante buscándola
yo tengo esta funcion pero en una app de .net utilizando la misma tecnica del link del web whatsapp
Hola amigo me da error 53, archivo no encontrado
Hola Gonzalo.
En donde te arroja el error?
Si es en la linea de Chrome, cambia el URL por el valido en donde esta instalado tu programa.
Saludos.
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
Gracias Cristiano!!!
Tienes toda la razón, al parecer agregaron un TAB más a la versión Web, por lo que hay que actualizar agregando un TAB al final.
Un gran abrazo de regreso 😀
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.
Hola Ramses.
Ya esta corregido eso, por si gustas volver a descargarlo 😀
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
Hola Jorge!
Es posible, igual actualice el codigo y el libro por si gustas volver a descargarlo y probar.
Saludos!
Un favor, me marca un error en la siguiente linea:
Shell («C:\Program Files (x86)\Google\Chrome\Application\chrome.exe -url https://web.whatsapp.com/«) ‘Cambiar esta linea si es necesario para encontrar Chrome
error 53
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!
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,
¡Hola Rakel!
Es muy raro que haga eso, ¿probaste con el libro que viene para descargar en el blog?
Intenta no mover nada a la hora de ejecutar y recuerda dejar abierta tu aplicación el tiempo que sea necesario.
Si no se resuelve, escríbeme a svallejo@excelcute.com
Hola Rakel.
Quedo solucionado eso en la versión del libro y codigo que estan en la entrada, por si gustas revisarlo nuevamente.
Saludos!
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.
¡Hola Paulo!
En la entrada hay dos macros, la de Whatsapp y la de Espera, asegúrate de tener las dos copiadas en tu proyecto de VBA
Si gustas revisar el libro en el que trabaje yo, puedes descargarlo desde aquí.
https://drive.google.com/uc?id=1uVj4Cx8diszLhRcTnX4Er6tRYrEvBojk&export=download&authuser=0
Si tienes más dudas, escríbeme a svallejo@excelcute.com.
Hay forma de realizar esto pero a varios grupos de whatsapp?
Hola Randal.
Si, solo en el numero de telefono (Columna B) escribe el nombre exacto del grupo al que quieres enviar el mensaje.
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.
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.
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.
¡Tienes toda la razon Migue! Bastantes cosas que agregarle, muchísimas gracias por compartirlo.
El Astro eres tú 😀
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
Buenas tardes: desde un link de API
https://api.whatsapp.com/send?phone=54911…&text=Hola
Cómo puedo agregarle que adjunte un archivo (con la ruta en el propio del disco) ?
Gracias
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 😀
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?
¡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!
Es cierto, lo probé después de forma manual y sólo pasa por el menú izquierdo y por el chat. ¡Gracias!
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……
Hola Francisco! Asegurate de no activar de nueva cuenta la hoja hasta que la macro termine y de tener bien abierta tu sesion de Whatsapp antes de correr la macro.
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.
Asi es Angel! Es posible expandir mucho este tema, pero para algunas cosas se requiere una API especial.
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
¡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.