Como Enviar E-mails de Mala Direta pelo Outlook com Anexos por Destinatário
🔍 WiseChecker

Como Enviar E-mails de Mala Direta pelo Outlook com Anexos por Destinatário

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.

ADVERTISEMENT

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

ADVERTISEMENT

Passos para Criar e Executar a Macro VBA

  1. 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.
  2. 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 Sub
    

    Nota: Ajuste os números das colunas para corresponder ao layout da sua tabela. A coluna 1 é a primeira coluna da sua tabela.

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

ADVERTISEMENT

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.

ADVERTISEMENT