Mandar un WhatsApp desde una macro de Excel es mucho más sencillo de lo que parece: no hace falta programar un envío real, basta con armar el enlace que usa WhatsApp Web y abrirlo en el navegador. En este tutorial usaremos VBA para construir ese enlace a partir de los teléfonos y mensajes guardados en una hoja, y le añadiremos un botón para hacerlo con un clic. Funciona en Excel para Microsoft 365, 2024, 2021, 2019 y 2016; en Excel para la web no se pueden ejecutar macros VBA.
Qué puede hacer Excel con WhatsApp y qué no
Excel no envía mensajes de WhatsApp por sí mismo. Lo que sí puede hacer es abrir el chat correspondiente con el texto ya escrito dentro, listo para que el usuario pulse la flecha verde de envío. Esto se consigue con la URL https://wa.me/, que WhatsApp reconoce en cualquier navegador: al hacer clic, abre WhatsApp Web (o la app, si está instalada) en el chat con ese número y con el mensaje prearmado.
A partir de ahí hay tres niveles. El más simple es abrir WhatsApp Web desde un enlace calculado en una celda, sin tocar el código. El siguiente es una macro en VBA que arma ese mismo enlace y lo abre con FollowHyperlink, lo que permite recorrer una lista y mandar el mismo aviso a varios clientes con un solo clic. El tercero, ya fuera del alcance de VBA, es conectar Excel con un bot real: la API de WhatsApp Business, proveedores como Twilio o plataformas bancarias; ahí Excel solo aporta los datos y el envío lo hace el proveedor.
Lo que tienes a mano antes de escribir una macro
Para escribir una macro necesitas dos cosas: la pestaña Programador, que viene oculta, y guardar el archivo como .xlsm, que es el formato que conserva el código. El editor donde se escribe VBA se abre con Alt+F11 y desde ahí se insertan módulos con Insertar > Módulo. Una vez tengas la macro, la cinta de opciones y la barra de herramientas de acceso rápido te dejan asignarla a un botón.
La seguridad también importa: Excel bloquea por defecto las macros de los archivos descargados de internet, así que si recibes un .xlsm por correo o lo bajas de la web, tienes que desbloquearlo desde sus Propiedades (clic derecho sobre el archivo > Propiedades > Desbloquear) antes de que los botones funcionen.
.xlsx, las macros se borran en silencio al guardar y no entenderás por qué desapareció el botón.Activar la pestaña Programador y abrir el editor de VBA
- Clic en Archivo > Opciones.
- En el cuadro Opciones de Excel, elige Personalizar cinta de opciones.
- En la columna de la derecha, marca la casilla Programador y pulsa Aceptar.
- Pulsa Alt+F11 para abrir el editor de Visual Basic.
- En el árbol de la izquierda, clic derecho sobre el libro > Insertar > Módulo.
El cuadro Guardar como y el formato .xlsm
- Pulsa F12 para abrir Guardar como.
- Elige la carpeta y el nombre del archivo.
- En Tipo, selecciona Libro de Excel habilitado para macros.
- Pulsa Guardar.
.xlsm; con .xlsx el código VBA se descarta al guardar.Mandar un WhatsApp a un número fijo con un clic
Vamos a trabajar con una hoja llamada Clientes: cinco personas con su nombre, su teléfono con código de país y el mensaje que se les quiere mandar. La macro leerá la fila activa, juntará el teléfono y el texto en una URL de WhatsApp y la abrirá en el navegador con FollowHyperlink. Después le pondremos un botón en la hoja para no tener que abrir el editor cada vez.
Preparar la hoja con los datos del mensaje
| A | B | C | |
|---|---|---|---|
| 1 | Cliente | Teléfono | Mensaje |
| 2 | Lucía Pérez | 5491155551234 | Hola Lucía, tu pedido está listo |
| 3 | Carlos Ruiz | 34665544332 | Hola Carlos, te confirmo la cita del martes |
| 4 | Ana Torres | 51987654321 | Ana, recordatorio: mañana cerramos a las 14 |
| 5 | Pedro Gómez | 573112223344 | Pedro, gracias por tu compra de hoy |
| 6 | María López | 541144556677 | María, tu transferencia fue recibida |
5491155551234, con el 54 de Argentina delante; sin ese prefijo, WhatsApp no sabe a qué país mandar el mensaje.La macro que arma el enlace wa.me
Sub EnviarWhatsApp()
Dim celda As Range
Dim numero As String
Dim texto As String
Dim enlace As String
For Each celda In Selection.Rows
numero = CStr(celda.Cells(1, 2).Value)
texto = CStr(celda.Cells(1, 3).Value)
texto = WorksheetFunction.EncodeURL(texto)
enlace = "https://wa.me/" & numero & "?text=" & texto
ActiveWorkbook.FollowHyperlink enlace
Next celda
End Sub
Se abre el navegador en la pestaña de WhatsApp Web con el chat del número elegido y el mensaje cargado en el cuadro de texto, listo para pulsar la flecha de envío.
WorksheetFunction.EncodeURL existe desde Excel 2013; si tu versión es anterior, mira el arreglo con el bucle manual que se explica más abajo.Poner un botón en la hoja que ejecute la macro
- Ve a la pestaña Clientes.
- Asegúrate de tener la pestaña Programador visible.
- Clic en Programador > Controles > Insertar > Botón (control de formulario).
- Dibuja el botón en la celda que prefieras.
- En el cuadro Asignar macro, elige
EnviarWhatsAppy pulsa Aceptar. - Selecciona una fila completa de la tabla (por ejemplo A2:C2) y pulsa el botón.
Mandar el mismo mensaje a toda la lista
Para enviar el mismo aviso a todos, una variante es recorrer el rango B2:B6, concatenar todos los números en una sola URL separada por saltos de línea y abrirla de una vez. Útil para recordatorios generales.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Cliente | Teléfono | Mensaje | Para envío masivo |
| 2 | Lucía Pérez | 5491155551234 | Recordatorio: cita mañana | 5491155551234 |
| 3 | Carlos Ruiz | 34665544332 | Recordatorio: cita mañana | 34665544332 |
| 4 | Ana Torres | 51987654321 | Recordatorio: cita mañana | 51987654321 |
| 5 | Pedro Gómez | 573112223344 | Recordatorio: cita mañana | 573112223344 |
| 6 | María López | 541144556677 | Recordatorio: cita mañana | 541144556677 |
Sub EnviarATodos()
Dim i As Long, ultimo As Long
Dim numero As String, texto As String, enlace As String
Dim lista As String
texto = WorksheetFunction.EncodeURL("Recordatorio: cita mañana")
lista = ""
ultimo = Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To ultimo
numero = CStr(Cells(i, 2).Value)
lista = lista & numero & "%0A"
Next i
enlace = "https://wa.me/" & Left(lista, Len(lista) - 3) & "?text=" & texto
ActiveWorkbook.FollowHyperlink enlace
End Sub
Pasar de Excel al chat con la web de WhatsApp a mano
Si prefieres no escribir una macro, puedes dejar el enlace ya armado en una celda con la función UNIRCADENAS y abrirlo tú mismo en el navegador. Es la opción más limpia para usuarios que no quieren tocar VBA o que usan Excel para la web.
Armar el enlace en una celda con la función UNIRCADENAS
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Cliente | Teléfono | Mensaje | Enlace |
| 2 | Lucía Pérez | 5491155551234 | Hola Lucía | https://wa.me/5491155551234?text=Hola%20Luc%C3%ADa |
| 3 | Carlos Ruiz | 34665544332 | Hola Carlos | https://wa.me/34665544332?text=Hola%20Carlos |
- Escribe en D2 la fórmula indicada.
- Arrastra el controlador de relleno hasta D6.
- Clic en una celda de la columna D y pulsa Ctrl+C.
- Pega el enlace en la barra de direcciones del navegador y pulsa Entrar.
=UNIRCADENAS("";FALSO;"https://wa.me/";B2;"?text=";C2)
https://wa.me/5491... y, al pegarlo en el navegador, abre WhatsApp Web con el chat cargado.UNIRCADENAS está en Excel 2019, 2021, 2024 y Microsoft 365; en versiones anteriores se reemplaza por una concatenación simple con &.Por qué la macro no abre WhatsApp o sale el mensaje en blanco
Las tres causas más habituales son el código de país que falta, los caracteres especiales mal codificados y la macro que no está donde el botón la busca. Veamos cada una con su arreglo concreto.
El número no tiene código de país y la página no carga
| A | B | |
|---|---|---|
| 1 | Cliente | Teléfono |
| 2 | Lucía Pérez | 1155551234 |
| 3 | Carlos Ruiz | 34665544332 |
En B2 falta el 54 de Argentina: la URL queda como https://wa.me/1155551234, que WhatsApp no reconoce. Se detecta con un SI que comprueba si los dos primeros caracteres son numéricos.
El texto del mensaje rompe el enlace por las tildes o los saltos de línea
Function CodificarURL(texto As String) As String
Dim i As Long, c As String, salida As String
Dim codigo As Long
Const caracteres = "áéíóúÁÉÍÓÚñÑüÜ¡¿"
For i = 1 To Len(texto)
c = Mid(texto, i, 1)
If InStr(caracteres, c) > 0 Then
codigo = AscW(c)
salida = salida & "%" & Hex((codigo \ 256) And &HFF) & "%" & Hex(codigo And &HFF)
Else
salida = salida & c
End If
Next i
CodificarURL = salida
End Function
WorksheetFunction.EncodeURL no existe en Excel 2010 ni 2013 (sí desde 2013 según compilación) y a veces falla con caracteres como la ñ. Esta función casera reemplaza cada carácter especial por su código %XX.
La macro no aparece al pulsar el botón
Tres cosas a revisar: que el archivo sea .xlsm y no .xlsx; que las macros no estén deshabilitadas (Centro de confianza > Configuración de macros); y que el botón esté asignado a EnviarWhatsApp haciendo clic derecho sobre él > Asignar macro.
Conectar Excel con un bot de WhatsApp o la API de un banco
VBA llega hasta donde llega: arma el enlace y abre el chat, pero la pulsación final de la tecla Enviar la hace una persona. Para enviar WhatsApp de verdad, sin intervención manual, hace falta un socio externo: la API de WhatsApp Business, accesible a través de proveedores como Twilio, MessageBird o 360dialog, o plataformas ya integradas en bancos de distintos países.
En Argentina, el banco Macro ofrece MacroChat para avisos y consultas desde la app; en Perú, Mibanco integra WhatsApp para notificaciones de crédito y cobranza; en Brasil, distintos bancos han incorporado asistentes con IA generativa dentro de WhatsApp. En todos los casos, Excel aporta la base de teléfonos y mensajes, y el envío real lo hace la plataforma del banco o del proveedor, que se conecta a la API oficial.
Lo que VBA hace y lo que necesita un socio externo
- VBA abre el chat con el mensaje prearmado; el envío lo hace el usuario con un clic.
- La API de WhatsApp Business envía el mensaje de verdad y devuelve un identificador de entrega.
- Un proveedor como Twilio se encarga de la conexión con la API, de las plantillas y de la facturación.
- Un banco con bot conversacional (MacroChat, Mibanco, bancos brasileños) ya tiene la integración lista y solo necesita los datos del cliente.
- Para respuestas automáticas o bots que lean lo que contesta el cliente, hace falta además un webhook: VBA no puede escucharlo.
Lo que ya sabes hacer con Excel y WhatsApp
- Armar el mensaje a partir del nombre, el teléfono y un texto guardado en columnas.
- Abrir el chat correspondiente en WhatsApp Web con un solo clic en un botón.
- Mandar el mismo aviso a toda la lista con una variante de la macro que concatena números.
- Dejar el enlace listo en una celda con UNIRCADENAS, sin tocar VBA, para pegarlo a mano en el navegador.
El siguiente paso, si necesitas que el mensaje se envíe solo y que el sistema registre la respuesta, es dar el salto a la API de WhatsApp Business a través de un proveedor certificado: ahí Excel pasa a ser solo la fuente de los datos y el envío lo garantiza la plataforma externa.
Datos comprobados en octubre de 2026.
Dudas al usar macros de WhatsApp en Excel
1. ¿Cómo enviar un mensaje de WhatsApp desde una macro de Excel?
Abre el libro donde está VBA (Alt+F11), crea un módulo en Insertar > Módulo y pega una sub que abra la URL https://api.whatsapp.com/send?phone=NUMERO&text=MENSAJE con el método FollowHyperlink del objeto Workbook. Cada vez que la ejecutes con F5, el sistema abrirá WhatsApp Web o la app con el chat ya cargado y el texto listo para enviar.
2. ¿La macro de WhatsApp que se baja de internet es segura?
No hay forma de garantizarlo sin revisar el código: cualquier persona con permisos de macros puede ejecutar archivos que borren archivos, roben contraseñas o instalen malware. Antes de ejecutar una macro descargada, ábrela con Alt+F11 y verifica que solo use FollowHyperlink o Shell para abrir el navegador; si ves Shell, Environ("TEMP") o referencias a URLSearchGuide, no la uses.
3. ¿Puedo cambiar el número de teléfono en la macro de WhatsApp?
Sí, porque el número va como parámetro en la propia URL. Modifica la línea que dice phone= escribiendo el código de país sin el signo + y el número junto, por ejemplo phone=5491155554444 para Argentina. Conviene guardar el número en una celda, por ejemplo B1, y concatenar en la fórmula con &B1 para no tocar el código cada vez.
4. ¿Cómo abrir el módulo donde se escribe la macro en Excel?
Pulsa Alt+F11 para entrar al editor; en el árbol de la izquierda, haz clic derecho sobre el nombre del libro y elige Insertar > Módulo. Aparecerá una ventana en blanco a la derecha donde se pega el código de la macro. Para volver a la hoja y ejecutarla, pulsa Alt+F11 otra vez o Alt+Q.
5. ¿Por qué la macro de WhatsApp no me abre el chat?
Lo más habitual es que el número esté mal escrito: debe llevar el código de país sin el signo + ni los ceros delante, por ejemplo 5491155554444 y no +54 9 11 5555 4444. También puede fallar si Excel no tiene un navegador configurado como predeterminado o si bloqueas las macros: habilítalas en Archivo > Opciones > Centro de confianza > Configuración > Configuración de macros.
6. ¿Qué delimitador de argumentos usa VBA en español?
VBA siempre usa la coma como separador aunque Excel esté en español, porque sigue las reglas del idioma inglés. Lo verás en cualquier MsgBox "Hola", vbInformation o en el argumento en .FormulaA1 = "=SUMA(A1:A10)". La traducción al español solo afecta a las fórmulas escritas en celdas, no al código VBA.
7. ¿Necesito tener WhatsApp instalado para que la macro funcione?
No es imprescindible: si tienes sesión abierta en WhatsApp Web en el navegador, la macro abrirá una pestaña nueva y enviará el mensaje. Si no hay sesión abierta, abrirá la pantalla de login y pedirá escanear el código QR con el móvil. En el móvil, la URL api.whatsapp.com abre directamente la app instalada.
8. ¿Puedo enviar el mensaje a varios contactos desde una macro?
Sí, recorriendo una columna con un bucle For Each: lee cada fila de la hoja, concatena el nombre y el teléfono y llama a la sub principal dentro del mismo bucle. Como cada iteración abre una pestaña nueva del navegador, el ritmo lo marcas con Application.Wait Now + TimeValue("00:00:02") para que no se acumulen llamadas.
Fuentes
- MicrosoftEl editor de VBA y la primera macro — documentación oficialconsultado el 05/10/2026
- MicrosoftAtajos que funcionan igual en cualquier idioma — documentación oficialconsultado el 05/10/2026
- MicrosoftFormatos de archivo de Excel — documentación oficialconsultado el 05/10/2026