Você precisa enviar e-mails personalizados com anexos que diferem para cada destinatário. O recurso padrão de mala direta do Word envia o mesmo documento para todos. Ele não anexa arquivos separados por destinatário nativamente. Este artigo explica como usar uma mesclagem do tipo Catálogo combinada com uma macro VBA para anexar arquivos exclusivos de uma pasta a e-mails individuais do Outlook.
Principais Conclusões: Envio de E-mails Personalizados com Anexos Individuais
- Mesclagem Catálogo do Word + macro VBA do Outlook: Combina uma mesclagem do tipo catálogo que lista todos os dados dos destinatários com uma macro que cria e-mails individuais e anexa arquivos com base no valor de um campo.
- Fonte de dados com uma coluna “AttachmentPath”: Cada linha do destinatário deve incluir o caminho completo do arquivo para o anexo exclusivo, para que a macro saiba qual arquivo anexar.
- A macro é executada a partir do documento mesclado do Word: Após a mesclagem Catálogo preencher uma tabela do Word, uma única execução da macro envia todos os e-mails e anexa o arquivo correto para cada linha.
Por que a Mala Direta do Word Não Consegue Anexar Arquivos por Destinatário por Padrão
A mala direta do Word tem dois tipos principais de saída: Cartas e Mensagens de E-mail. A opção Mensagens de E-mail envia o documento mesclado como corpo do e-mail ou como anexo. Mas ela anexa o mesmo documento a todos os e-mails. Não há campo ou regra nativa para anexar um arquivo que mude por destinatário.
A solução usa um tipo de mesclagem Catálogo. Uma mesclagem Catálogo não cria páginas ou e-mails separados. Ela preenche uma única tabela do Word com uma linha por destinatário. Essa tabela é então processada por uma macro VBA que lê cada linha, cria um e-mail no Outlook e anexa o arquivo especificado na linha.
O que Você Precisa Antes de Começar
- Microsoft Outlook configurado com uma conta de e-mail funcional
- Word 2019, Word 2021 ou Word para Microsoft 365
- Uma fonte de dados, como uma planilha do Excel ou tabela do Access, com colunas para Nome, Email, Assunto e AttachmentPath
- Uma pasta no seu computador ou rede contendo os arquivos de anexo nomeados exatamente como aparecem na coluna AttachmentPath
- Macros habilitadas no Word: Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Configurações de Macro > Habilitar todas as macros
Passos para Configurar a Fonte de Dados e a Mesclagem Catálogo
- Prepare sua fonte de dados
No Excel, crie colunas: FirstName, LastName, EmailAddress, SubjectLine, AttachmentPath. Preencha AttachmentPath com caminhos completos, como C:\Anexos\Fatura_123.pdf. Salve e feche a pasta de trabalho. - Abra um novo documento em branco do Word
Vá em Correspondências > Iniciar Mala Direta > Catálogo. Isso informa ao Word para construir uma única tabela com todos os registros. - Selecione os destinatários
Clique em Selecionar Destinatários > Usar uma Lista Existente. Navegue até seu arquivo Excel. Na caixa de diálogo Selecionar Tabela, escolha a planilha que contém seus dados. Certifique-se de que a primeira linha da planilha contenha cabeçalhos de coluna. - Insira os campos de mesclagem no documento
Insira uma tabela do Word com uma linha e quantas colunas forem necessárias. Em cada célula, clique em Correspondências > Inserir Campo de Mesclagem e escolha o nome da coluna correspondente. Inclua uma célula para AttachmentPath, mesmo que não apareça no e-mail final. Esse campo informa à macro qual arquivo anexar. - Conclua a mesclagem
Clique em Correspondências > Concluir e Mesclar > Editar Documentos Individuais. Na caixa de diálogo Mesclar para Novo Documento, escolha Todos. O Word gera um novo documento com uma linha de tabela por destinatário. Salve este documento mesclado como MergedOutput.docx.
Passos para Criar e Executar a Macro VBA
- Abra o Editor do Visual Basic
Pressione Alt+F11 no Word. No painel Projeto, clique duas vezes em Normal ou no projeto do documento atual para abrir um módulo de código. - Insira um novo módulo
Clique em Inserir > Módulo. Cole o seguinte código de macro no módulo:Sub SendMailWithAttachments() Dim objOutlook As Object Dim objMail As Object Dim objDoc As Document Dim objTable As Table Dim iRow As Integer Dim strTo As String Dim strSubject As String Dim strAttachment As String Set objDoc = ActiveDocument Set objTable = objDoc.Tables(1) Set objOutlook = CreateObject("Outlook.Application") For iRow = 2 To objTable.Rows.Count strTo = objTable.Cell(iRow, 2).Range.Text strTo = Left(strTo, Len(strTo) - 2) ' Remove marcadores de fim de célula strSubject = objTable.Cell(iRow, 4).Range.Text strSubject = Left(strSubject, Len(strSubject) - 2) strAttachment = objTable.Cell(iRow, 5).Range.Text strAttachment = Left(strAttachment, Len(strAttachment) - 2) Set objMail = objOutlook.CreateItem(0) ' olMailItem With objMail .To = strTo .Subject = strSubject .Body = "Prezado(a) " & objTable.Cell(iRow, 1).Range.Text & vbCrLf & vbCrLf & "Segue em anexo o seu documento." If Dir(strAttachment) <> "" Then .Attachments.Add strAttachment End If .Send End With Set objMail = Nothing Next iRow Set objOutlook = Nothing Set objDoc = Nothing MsgBox "E-mails enviados com sucesso." End SubNota: Ajuste os números das colunas para corresponder ao layout da sua tabela. A coluna 1 é a primeira coluna da sua tabela.
- Execute a macro
Feche o editor VBA. No documento mesclado (MergedOutput.docx), pressione Alt+F8, selecione SendMailWithAttachments e clique em Executar. O Outlook envia cada e-mail com o anexo correto.
Problemas Comuns ao Enviar E-mails de Mala Direta com Anexos
A macro diz “E-mails enviados com sucesso”, mas nenhum e-mail chega
O Outlook pode mover a mensagem para a Caixa de Saída e não enviá-la automaticamente. Abra o Outlook, vá em Arquivo > Opções > Correio e, em Enviar mensagens, certifique-se de que a caixa de seleção “Enviar imediatamente quando conectado” esteja marcada. Alternativamente, altere a linha da macro .Send para .Display para revisar cada e-mail antes de enviar manualmente.
Erro de arquivo de anexo não encontrado
A coluna AttachmentPath deve conter o caminho completo exato. Uma letra de unidade ausente, nome de pasta errado ou espaço extra faz com que a macro ignore o anexo. Verifique o caminho colando-o no Explorador de Arquivos do Windows. Se os caminhos dos arquivos contiverem espaços, a macro ainda funciona porque usa a string completa.
Endereços de e-mail não são reconhecidos pelo Outlook
A macro lê o texto da célula incluindo marcadores de parágrafo. A função Left(strTo, Len(strTo) - 2) remove os dois caracteres de fim de célula. Se sua tabela tiver espaços extras ou quebras de linha dentro da célula, use a função Trim: strTo = Trim(Left(strTo, Len(strTo) - 2)).
Mesclagem Catálogo vs. Mala Direta Padrão para Anexos
| Item | Mala Direta Padrão (Mensagens de E-mail) | Mesclagem Catálogo + Macro VBA |
|---|---|---|
| Anexo por destinatário | Não suportado | Suportado via campo AttachmentPath |
| Conteúdo do corpo do e-mail | Documento mesclado ou texto | Corpo personalizado definido na macro |
| Complexidade de configuração | Baixa | Moderada |
| Requer permissões de macro | Não | Sim |
| Suporta linhas de assunto diferentes | Sim | Sim |
| Funciona com Outlook na web | Não | Não |
Agora você pode enviar e-mails personalizados com anexos exclusivos usando Word e Outlook. Teste a macro com um pequeno conjunto de destinatários primeiro. Para personalização avançada, modifique a macro para incluir um corpo de e-mail HTML definindo a propriedade .HTMLBody em vez de .Body. Este método funciona com Word para Microsoft 365, Word 2021 e Word 2019 no Windows.