A automação de tarefas repetitivas é um dos pilares da produtividade moderna. Uma das demandas mais comuns no mundo corporativo é o envio em massa de mensagens, cobranças ou relatórios via WhatsApp.
Neste artigo, vamos dissecar uma solução prática usando Excel VBA e a técnica de SendKeys para enviar mensagens e anexos automaticamente, sem a necessidade de APIs pagas.
1. Estruturando a Planilha de Controle
Para que o código VBA funcione, a planilha precisa estar organizada de forma padronizada. O script lê linha por linha para identificar quem deve receber a mensagem.
O Layout da Ferramenta
A interface deve ser limpa e funcional. Conforme vemos na imagem abaixo, temos um cabeçalho simples e um botão para disparar a macro.
Organização das Colunas
A lógica do código depende estritamente da posição das colunas. Baseado no código e na imagem dos dados, a estrutura deve ser:
- Coluna B (Contato): Nome exato do contato ou número (como salvo na agenda/WhatsApp).
- Coluna C (Mensagem): O texto que será enviado.
- Coluna D (Tipo): Define se o anexo é “ARQUIVO” (documentos gerais) ou “IMAGEM”.
- Coluna E (Arquivo 1): O caminho completo do arquivo no computador (ex:
C:\User\Documentos\boleto.pdf). - Coluna F (Data e Hora): Onde o código registrará automaticamente quando o envio foi feito.
Dica de SEO para Planilhas: Mantenha seus dados tabulados. O código verifica se a Coluna F está vazia. Se estiver, ele envia. Se já tiver data, ele pula. Isso evita envios duplicados.

2. O Motor da Automação: Entendendo o Código VBA
O segredo dessa automação está no Visual Basic for Applications (VBA). O código utiliza a função SendKeys, que simula o pressionamento de teclas do teclado (como TAB, ENTER) para “navegar” pelo WhatsApp Web no navegador Chrome.
Abaixo, explicamos o funcionamento do script lsNovoEnviarWhatsApp bloco por bloco:
Variáveis e Inicialização
VBA
Public Sub lsNovoEnviarWhatsApp()
Dim lUltimaLinha As Long
Dim i As Long
Dim lContato As String
' ... outras declarações ...
'Abre o WhatsApp no Chrome
Shell "C:\Program Files\Google\Chrome\Application\chrome.exe" & " https://web.whatsapp.com/"
Application.Wait Now + TimeValue("00:00:10")
- O que faz: Abre o Google Chrome diretamente no site do WhatsApp Web.
- Importante: O comando
Waitpausa o Excel por 10 segundos. Esse tempo é crucial para dar tempo ao site carregar e conectar ao seu celular.
O Loop de Verificação
VBA
lUltimaLinha = WhatsApp.Cells(WhatsApp.Rows.Count, 2).End(xlUp).Row
'Faz o loop pelas linhas da tabelas (começando da linha 7)
For i = 7 To lUltimaLinha
If WhatsApp.Cells(i, 6).Value = "" Then
' Carrega as variáveis com os dados da planilha
lContato = WhatsApp.Cells(i, 2).Value
lMensagem = WhatsApp.Cells(i, 3).Value
lTipo = UCase(WhatsApp.Cells(i, 4).Value)
lArquivo = WhatsApp.Cells(i, 5).Value
- Lógica: O código varre a planilha da linha 7 até a última preenchida.
- Filtro: A condição
If WhatsApp.Cells(i, 6).Value = ""garante que apenas linhas sem data de envio (pendentes) sejam processadas.
Navegação e Busca do Contato
Esta é a parte mais crítica do SendKeys. O código pressiona TAB repetidamente para mover o cursor do navegador até a caixa de busca do WhatsApp.
VBA
If i = 7 Then
'Primeiro contato: Precisa de 4 TABs para chegar na busca
SendKeys "{TAB}", True
SendKeys "{TAB}", True
SendKeys "{TAB}", True
SendKeys "{TAB}", True
Else
'Próximos contatos: O foco já está na área certa, repete a navegação
Application.Wait Now + TimeValue("00:00:02")
' ...sequência de TABS...
End If
SendKeys lContato ' Digita o nome do contato
SendKeys "{ENTER}" ' Entra na conversa
Envio de Anexos (Arquivos ou Imagens)
O código diferencia o tipo de anexo para saber como navegar no menu “Clips” (Anexar) do WhatsApp.
VBA
'Enviar arquivo
If lTipo = "ARQUIVO" Then
SendKeys "+{TAB}" ' Shift + TAB (Volta para o ícone de clips)
' ... navegação para selecionar Documento ...
SendKeys lArquivo ' Cola o caminho do arquivo
Else
' Lógica para Imagem (Geralmente desce uma seta a mais no menu)
SendKeys "+{TAB}"
SendKeys "{DOWN}" ' Desce para selecionar Fotos/Vídeos
' ...
End If
- SendKeys “+{TAB}”: Representa o atalho
Shift + Tab. No WhatsApp Web, isso move o foco da caixa de texto para o botão de anexar (o clipe de papel). - Caminho do Arquivo: O código “digita” o caminho do arquivo na janela de upload do Windows e aperta Enter para carregar.
Finalização e Registro
VBA
'Gravar a data e horário de envio para não enviar novamente
WhatsApp.Cells(i, 6).Value = Now
End If
Next i
MsgBox "Mensagens enviadas!"
End Sub
Ao final do envio de cada linha, o Excel carimba a data atual na Coluna F. Isso evita spam ou duplicidade caso você rode a macro novamente.
3. Requisitos e Cuidados
Para que essa automação funcione perfeitamente, considere os pontos abaixo:
- Nome da Planilha: No código, o objeto da planilha é chamado de
WhatsApp. Certifique-se de que, no VBE (Janela de Propriedades), o CodeName da sua planilha seja alterado paraWhatsAppou altere o código paraSheets("NomeDaAba"). - Não toque no mouse: O método
SendKeyssimula seu teclado. Se você clicar em outra janela enquanto o código roda, o Excel começará a “digitar” na janela errada, causando erros. - Caminho do Chrome: Verifique se o caminho
C:\Program Files\Google\Chrome\Application\chrome.exeé o correto para o seu computador. - Resolução da Tela: A quantidade de vezes que o comando
{TAB}é pressionado pode variar dependendo do zoom do navegador ou tamanho do monitor. Se o código não encontrar a barra de busca, ajuste a quantidade deSendKeys "{TAB}".
Código VBA de Envio de Whatsapp Excel VBA
Código pronto para envio de whatsapp em Excel com VBA.
Public Sub lsNovoEnviarWhatsApp()
Dim lUltimaLinha As Long
Dim i As Long
Dim lContato As String
Dim lMensagem As String
Dim lArquivo As String
Dim lTipo As String
'Abre o WhatsApp
Shell "C:\Program Files\Google\Chrome\Application\chrome.exe" & " https://web.whatsapp.com/"
Application.Wait Now + TimeValue("00:00:10")
lUltimaLinha = WhatsApp.Cells(WhatsApp.Rows.Count, 2).End(xlUp).Row
'Faz o loop pelas linhas da tabelas
For i = 7 To lUltimaLinha
If WhatsApp.Cells(i, 6).Value = "" Then
lContato = WhatsApp.Cells(i, 2).Value
lMensagem = WhatsApp.Cells(i, 3).Value
lTipo = UCase(WhatsApp.Cells(i, 4).Value)
lArquivo = WhatsApp.Cells(i, 5).Value
'Localiza o contato e envia a mensagem
If i = 7 Then
'Primeiro contato
SendKeys "{TAB}"
SendKeys "{TAB}"
SendKeys "{TAB}"
SendKeys "{TAB}"
'SendKeys "{TAB}"
'SendKeys "{TAB}"
Else
Application.Wait Now + TimeValue("00:00:02")
'Próximo contato
SendKeys "{TAB}"
SendKeys "{TAB}"
SendKeys "{TAB}"
SendKeys "{TAB}"
SendKeys "{TAB}"
End If
Application.Wait Now + TimeValue("00:00:02")
SendKeys lContato
Application.Wait Now + TimeValue("00:00:02")
SendKeys "{ENTER}"
SendKeys lMensagem
Application.Wait Now + TimeValue("00:00:03")
SendKeys "{ENTER}"
'Enviar arquivo
If lTipo = "ARQUIVO" Then
SendKeys "+{TAB}"
SendKeys "+{TAB}"
SendKeys "{ENTER}"
SendKeys "{ENTER}"
SendKeys "{TAB}"
SendKeys "{TAB}"
Application.Wait Now + TimeValue("00:00:03")
SendKeys lArquivo
Application.Wait Now + TimeValue("00:00:03")
SendKeys "{ENTER}"
Application.Wait Now + TimeValue("00:00:03")
SendKeys "{ENTER}"
Else
SendKeys "+{TAB}"
SendKeys "+{TAB}"
SendKeys "{ENTER}"
SendKeys "{DOWN}"
SendKeys "{ENTER}"
SendKeys "{TAB}"
SendKeys "{TAB}"
Application.Wait Now + TimeValue("00:00:03")
SendKeys lArquivo
Application.Wait Now + TimeValue("00:00:03")
SendKeys "{ENTER}"
Application.Wait Now + TimeValue("00:00:03")
SendKeys "{ENTER}"
End If
'Gravar a data e horário de envio
WhatsApp.Cells(i, 6).Value = Now
End If
Next i
MsgBox "Mensagens enviadas!"
End Sub
Conclusão
Esta macro é uma solução poderosa e de custo zero para pequenas e médias empresas que precisam automatizar a comunicação. Ao combinar a estruturação de dados do Excel com a automação de interface do VBA, você economiza horas de trabalho manual.
Download Planilha Enviar WhatsApp Excel VBA
Clique no botão abaixo para realizar o download do arquivo de exemplo:



