Mala direta em PDF e envio individual por e-mail: com macro ou sem código

por Meelika Kivi · Suporte ao Cliente

Sim, dá para fazer uma mala direta em PDF, mas o Word sozinho só entrega um PDF que contém todos os registros. Ele não consegue salvar cada registro como um PDF separado, e a mala direta por e-mail dele não consegue anexar um PDF a cada mensagem. Para enviar a cada destinatário o seu próprio PDF, você precisa de uma destas três coisas: uma macro VBA (Word para desktop no Windows com o Outlook clássico), um suplemento pago ou uma ferramenta que faça a mala direta, o PDF e o e-mail em uma única etapa.

Este guia mostra o que o Word faz nativamente, traz uma macro curta que você pode adaptar e explica o caminho sem código, para quando você preferir não manter código.

word

O que o Word consegue e não consegue fazer sozinho

Uma mala direta no Word (guia Correspondências, depois Iniciar Mala Direta, Selecionar Destinatários e Inserir Campo de Mesclagem) termina com Concluir e Mesclar, que oferece três saídas:

  • Editar Documentos Individuais cria um único documento longo do Word com todos os registros, um depois do outro, separados por quebras de seção. Salve isso como PDF e você terá um PDF grande, não um arquivo por pessoa.
  • Imprimir Documentos envia todos os registros para uma impressora. Escolher uma impressora de PDF dá, de novo, um único arquivo combinado.
  • Enviar Mensagens de Email transforma cada carta mesclada no corpo de um e-mail e o envia pelo Outlook, que precisa ser o seu programa de e-mail padrão. A carta é a própria mensagem: o Word não a converte em PDF, e não há campo para anexar um arquivo por destinatário.

Vale conhecer mais duas limitações antes de planejar qualquer coisa. O Word na Web não tem mala direta, então tudo isso exige o Word para desktop. E o Word para Mac tem a mesma guia Correspondências, mas a macro abaixo depende de caminhos do Windows e da interface de automação do Outlook para Windows.

Ou seja, a lacuna são sempre as mesmas duas etapas: dividir o resultado em um PDF por registro e anexar cada PDF a um e-mail para o endereço certo.

Prepare primeiro os dados no Excel e o modelo no Word

Qualquer que seja o caminho escolhido, a preparação é a mesma:

  • Uma linha por destinatário no Excel, com os cabeçalhos na primeira linha e sem linhas em branco no meio.
  • Uma coluna de e-mail (por exemplo Email) com um endereço por célula.
  • Uma coluna para o nome do arquivo, como um número de cliente ou o sobrenome. Evite cabeçalhos com espaços ou pontuação; eles são mais fáceis de referenciar em uma macro.
  • Campos de mesclagem no modelo do Word, inseridos com Correspondências, Inserir Campo de Mesclagem. Confira alguns registros com Visualizar Resultados antes de automatizar qualquer coisa.

Se valores ou datas aparecerem errados na visualização (casas decimais demais, uma data na ordem americana), corrija isso agora com opções de campo; veja como formatar campos de mala direta no Word.

O caminho da macro: um PDF por registro, enviado pelo Outlook

Uma macro VBA automatiza o que você faria à mão. Ela percorre a lista de destinatários e, para cada registro:

  1. limita a mala direta àquele único registro,
  2. executa a mala direta em um documento novo e temporário,
  3. salva esse documento como PDF com um nome tirado dos dados,
  4. fecha o documento temporário sem salvá-lo,
  5. cria uma mensagem do Outlook para o endereço daquele registro e anexa o PDF.

O código abaixo é para o Word para desktop no Windows com o Outlook clássico instalado. Ele usa vinculação tardia (late binding), então você não precisa adicionar uma referência ao Outlook. Troque Email e Sobrenome pelos nomes das colunas da sua planilha.

' Somente Word para desktop no Windows. Salve antes o documento principal:
' os PDFs são gravados na mesma pasta. Conecte a lista e remova qualquer filtro.
Sub MergeEachRecordToPdfAndEmail()
    Dim mainDoc As Document, outDoc As Document
    Dim olApp As Object, i As Long, lastRecord As Long
    Dim pdfPath As String, emailTo As String

    Set mainDoc = ActiveDocument
    Set olApp = CreateObject("Outlook.Application")

    With mainDoc.MailMerge
        .Destination = wdSendToNewDocument
        .DataSource.ActiveRecord = wdLastRecord
        lastRecord = .DataSource.ActiveRecord

        For i = 1 To lastRecord
            .DataSource.ActiveRecord = i
            .DataSource.FirstRecord = i
            .DataSource.LastRecord = i
            emailTo = .DataSource.DataFields("Email").Value
            pdfPath = mainDoc.Path & "\" & i & "_" & _
                .DataSource.DataFields("Sobrenome").Value & ".pdf"

            .Execute Pause:=False
            Set outDoc = ActiveDocument
            outDoc.ExportAsFixedFormat OutputFileName:=pdfPath, _
                ExportFormat:=wdExportFormatPDF
            outDoc.Close SaveChanges:=wdDoNotSaveChanges

            With olApp.CreateItem(0)
                .To = emailTo
                .Subject = "Seu documento"
                .Body = "Segue em anexo o seu documento."
                .Attachments.Add pdfPath
                .Display   ' troque por .Send depois de um teste bem-sucedido
            End With
        Next i
    End With
End Sub

Como executá-la com segurança:

  1. Pressione Alt+F11 no Word, escolha Inserir, Módulo e cole o código.
  2. Para um primeiro teste, troque temporariamente lastRecord na linha do For por 3. A macro então cria três PDFs e abre três rascunhos de e-mail sem enviar nada.
  3. Confira os PDFs e os rascunhos. Só então troque .Display por .Send e coloque lastRecord de volta.
  4. Salve o modelo como documento habilitado para macro (.docm) se quiser manter a macro junto com ele.

O que costuma dar errado com essa abordagem:

  • Somente o Outlook clássico. O novo Outlook para Windows não oferece suporte a esse tipo de automação, e o Outlook pode exibir um aviso de segurança quando uma macro envia e-mails.
  • Nomes de arquivo. Um valor com barra, dois-pontos ou ponto de interrogação na coluna do nome faz a exportação do PDF falhar. Use um ID ou uma coluna já limpa para os nomes de arquivo.
  • Filtros e linhas excluídas. O loop simples percorre os registros pelo número. Remova antes os filtros e os destinatários desmarcados, ou apague essas linhas da planilha.
  • Sem log. Se algo falhar no meio do caminho, você precisa descobrir quais e-mails já saíram. Execuções maiores precisam de tratamento de erros e de um arquivo de log.

Para uma introdução mais tranquila ao editor do VBA e às macros em uma mala direta, veja Como combinar mala direta com macros do Word.

Suplementos e outras ferramentas

Se você prefere não mexer em código, vários suplementos pagos ampliam o Word ou o Outlook com uma opção do tipo "um PDF por registro, anexado a cada e-mail". Eles variam em preço, licenciamento e forma de envio, então consulte a documentação atual do fornecedor:

  • Suplementos de mala direta para o Outlook, como o Mail Merge Toolkit da MAPILab, acrescentam opções de anexo à etapa Enviar Mensagens de Email do Word.
  • O Adobe Acrobat no Windows adiciona ao Word uma guia Acrobat, cuja opção de mala direta (Mail Merge) converte uma mala direta do Word em arquivos PDF. Ele exige uma licença paga do Acrobat e o Word para desktop.
  • O AutoMailMerge, um plug-in do Acrobat da EverMap, funciona no sentido inverso: ele preenche um formulário PDF, e não um documento do Word.
  • O Power Automate pode preencher um modelo do Word, convertê-lo em PDF e enviá-lo pelo Outlook, linha por linha. O conector do Word é um conector premium e trabalha com controles de conteúdo, não com campos de mala direta, então normalmente você precisa refazer o modelo.

Se o seu modelo já é um formulário PDF e não um documento do Word, a pergunta deixa de ser "mala direta em PDF" e passa a ser "preencher um PDF a partir do Excel"; veja preenchimento automático de formulários PDF.

O caminho sem código: entra o modelo do Word, sai um PDF por destinatário

O MailMergic faz a mala direta, a conversão para PDF e o envio em um só lugar, no navegador. Nada é instalado: nenhum suplemento do Word, nenhum Outlook, nenhuma configuração de segurança de macros.

  1. Carregue o seu modelo do Word (.docx). Layout, fontes e papel timbrado continuam como estão.
  2. Adicione a sua lista de destinatários do Excel (.xlsx ou .xls), CSV ou Google Sheets. Uma coluna contém o endereço de e-mail.
  3. Posicione os campos de mesclagem e visualize algumas linhas.
  4. Gere um PDF (ou arquivo do Word) por linha, com o nome tirado dos seus dados, por exemplo Fatura_{Numero}.pdf. Baixe-os em um ZIP se você só precisar dos arquivos.
  5. Escreva o e-mail. O assunto e o corpo também aceitam campos de mesclagem, e o documento de cada destinatário é anexado à mensagem dele. Você pode enviar a partir do seu próprio domínio verificado ou do seu endereço sem nenhuma configuração.
  6. Acompanhe o resultado. Entregas, devoluções e aberturas são registradas por linha, então um endereço inválido aparece em vez de desaparecer em silêncio.

Você também pode anexar um arquivo fixo que todos recebem (termos e condições, um mapa do local) ao lado do pessoal e proteger cada PDF com uma senha tirada de uma coluna. Os detalhes estão na página mala direta com anexos.

O plano gratuito permite gerar 100 documentos por mês (com marca d'água), sem cartão de crédito, para você conferir o resultado com o seu próprio modelo antes de enviar qualquer coisa. O envio de documentos por e-mail faz parte dos planos pagos.

Carregue o seu modelo do Word e crie um PDF por destinatário

Qual caminho escolher

  • Macro: gratuita e totalmente sob o seu controle, se você trabalha no Windows com o Outlook clássico e se sente à vontade para testar e manter código VBA.
  • Suplemento: sem código, mas preso ao Word para desktop ou ao Acrobat em uma máquina e a uma licença por usuário.
  • Ferramenta no navegador: sem código e sem instalação, funciona em qualquer computador e acrescenta acompanhamento por destinatário. Os seus dados são carregados no serviço para fazer a mala direta.

Seja qual for a sua escolha, teste primeiro com três ou quatro endereços seus. Um erro em uma mala direta vai para todo mundo de uma vez, e uma execução de teste custa um minuto.

Também disponível em