Mala direta é uma funcionalidade que permite a criação de correspondências personalizadas em massa, como cartas, e-mails, etiquetas de endereço ou envelopes, a partir de um documento padrão no Microsoft Word combinado com uma fonte de dados (como uma planilha do Excel). Esse recurso é amplamente utilizado para enviar informações personalizadas a um grande número de destinatários de forma eficiente.
No exemplo abaixo mostro um exemplo de envio de dados entre o excel e o word, e depois finalizo em um pdf, mas poderia ser também através de e-mails.
Para isso monte sua planilha da forma que desejar (planilha estruturada). Os nomes das colunas serão usadas de conexão com o word, por tanto, evite muda-las posteriormente para não dar erro.
As colunas em amarelo (coluna B e C) são a que quero que apareça no documento Word.
Agora abra o Word que deseja automatizar o preenchimento, monte todo o layout que você quer no word e agora vamos fazer um DE / PARA com os dados da planilha para os campos no Word.
No Word, clique em Correspondências, selecionar Destinatários, Usar uma lista existente
Selecione o arquivo em Excel, e posteriormente selecione a planilha (aba) que esta alocado os dados.
A partir deste momento, a conexão entre o arquivo word e excel foram feitas e os dados estarão disponíveis para que você faça o apontamento uma única vez. O Word não mostra nenhum aviso, por tanto nada vai mudar na tela, a diferença estará quando você clica novamente na guia Correspondências, Inserir Campo de Mesclagem.
O campo de mesclagem são os nomes das colunas que estão os dados lá no excel. Para fazer o DE / PARA eu coloco o cursor do mouse no lugar exato que eu quero que o dado apareça no word e insiro o nome da coluna apenas clicando nos nomes disponíveis conforme imagem abaixo:
Neste exemplo, a palavra "nome" é um texto fixo do meu documento, mas o nome do contratante é um dado variável que será alterado lá no Excel. Para que a mágica aconteça, preciso fazer o apontamento colocando o cursor do mouse no local (contratante) e clicando no nome (contratante) conforme imagem acima. Veja que estamos falando do "contratante" que está no documento do Word e o "contratante" que esta em "inserir campo de mesclagem". Após fazer isso, ficará assim:
Você terá que fazer estes apontamentos no documento, para cada item colunar do Excel.
Após finalizar os apontamentos, clique em Visualizar Resultados no Word, dentro da guia de Correspondências também.
O arquivo em Excel poderá ficar fechado, pois não interfere.
Antes de fechar o arquivo Word, salve-o.
Ao abrir o arquivo Word novamente, irá aparecer a seguinte mensagem:
Clique em sim, para que o Word leia os dados do Excel e eles irão aparecer automaticamente no seu documento. Caso não apareça, vá até a guia Correspondências e clique em Visualizar Resultados no Word.
Toda vez que você abrir o arquivo no Word, tenha a certeza que a sua fonte de dados (planilha Excel) esta atualizada, e sempre que abrir o documento no word, recomendo além de clicar em SIM na caixa box acima, para garantir que esta apontando para a planilha que preciso, clico em Correspondências, Selecionar Destinatários, Usar uma lista existente, procure na coluna da esquerda a pasta local que esta sua planilha e clique nela para atualizar.
No arquivo de Word atualizado, você pode clicar em "Visualizar resultados" para fazer uma conferência breve e se estiver ok, clico em Concluir e Mesclar e neste exemplo, posso enviar por e-mail:
Exemplo de mala direta com envio de diversos e-mails
Em mesclagem para e-mail, em Para: Seleciono a coluna contendo os e-mails (base de dados no Excel), digito o assunto, abro a caixa de e-mail do Outlook (confere se esta logado, o ícone do Outlook precisa estar aberto na barra de tarefas) e clico em Ok e todos os e-mails serão enviados de acordo com os dados linha a linha no excel com o layout que você montou no word.
Corrigir tipo de dados do mala direta entre Excel e Word
Ao abrir o word por padrão a data vem no formato americano, mesmo que no Excel esteja formatado em dia, mês e ano, no word aparecerá diferente. Para corrigir tipo de dados no Word com o mala direta Clique em Correspondências e em Visualizar resultados.
Selecione o campo que deseja corrigir/ajustar que estará entre << e >>, e clique com o botão direito e em alternar códigos de campo
🔺 Formato data dd/mm/yyyy
Selecione o campo de data que estará entre << e >>,
clique com o botão direito e em alternar códigos de campo e estará:
{ MERGEFIELD PERIODO_IN}
Meu campo de data, estou chamando de periodo_in
vamos substituir a configuração de data e a data estará no formato padrão BR:
{ MERGEFIELD PERIODO_IN \@ "dd/MM/yyyy" }
🔺 Nome completo do mês, dia, ano (exemplo: Junho 28, 2024)
{ MERGEFIELD Data \@ "MMMM d, yyyy" }
🔺 Trazer data com dia da semana:
{ MERGEFIELD Data \@ "ddd, MMM d, yyyy" }
🔺 Número inteiro
{ MERGEFIELD Numero \# "0" }
🔺 Número com duas casas decimais
{ MERGEFIELD Numero \# "0.00" }
🔺 Número com separador de milhares
{ MERGEFIELD Numero \# "#,##0" }
🔺 Número em formato de moeda
{ MERGEFIELD Numero \# "$#,##0.00" }
🔺 Primeira letra maiúscula:
{ MERGEFIELD Nome \* FirstCap }
🔺 Todas as letras maiúsculas:
{ MERGEFIELD Nome \* Upper }
🔺 Todas as letras minúsculas:
{ MERGEFIELD Nome \* Lower }
🔺 Combinar um nome completo a partir de primeiros e últimos nomes
{ MERGEFIELD PrimeiroNome } { MERGEFIELD UltimoNome }
🔺 Exibir "Sr." ou "Sra." baseado no campo de gênero
{ IF { MERGEFIELD Genero } = "M" "Sr." "Sra." } { MERGEFIELD UltimoNome }
Alguns exemplos práticos:
Nome: { MERGEFIELD Nome \* FirstCap } Data de Nascimento: { MERGEFIELD DataNascimento \@ "dd/MM/yyyy" } Salário: { MERGEFIELD Salario \# "$#,##0.00" } Gênero: { IF { MERGEFIELD Genero } = "M" "Sr." "Sra." } { MERGEFIELD UltimoNome }
Exemplo de mala direta gerando pdf automático
Para auxiliar o usuário, criei esta guia de suporte:
Com esta guia, criei um código em VBA para que seja exportado para PDF o documento para que seja salvo no mesmo caminho que esta o word. Caso queira fazer esta guia, utilizo o Ribbon, você pode saber mais clicando aqui.
Segue código VBA caso queira:
(É preciso habilitar a guia desenvolvedor e criar um módulo, após criar o módulo é preciso criar um botão e chamar a macro criada)
Sub ExportarParaPDF()
Dim strNomeArquivo As String
Dim strCaminhoArquivo As String
Dim strCaminhoPDF As String
' Obter o nome e o caminho do arquivo atual
strNomeArquivo = ActiveDocument.Name
strCaminhoArquivo = ActiveDocument.Path
' Remover a extensão .docx do nome do arquivo
If InStr(strNomeArquivo, ".docx") > 0 Then
strNomeArquivo = Left(strNomeArquivo, InStr(strNomeArquivo, ".docx") - 1)
End If
' Definir o caminho do arquivo PDF
strCaminhoPDF = strCaminhoArquivo & "\" & strNomeArquivo & ".pdf"
' Exportar para PDF
ActiveDocument.ExportAsFixedFormat OutputFileName:=strCaminhoPDF, _
ExportFormat:=wdExportFormatPDF
' Informar ao usuário que o arquivo foi salvo
MsgBox "Contrato PDF salvo em: " & strCaminhoPDF
End Sub
Criar botões de forma simples:
Arquivo, Mais, Opções, Personalizar Faixa de Opções, Nova Guia
Nesta nova guia, você pode adicionar botões de sua preferência ou chamar alguma macro que tenha criado no VBE.
Para chamar a macro, em Escolher comandos em, selecione Macro e adicione na listagem a direita da guia que tiver criado.
Uma outra dica, é que quando contem uma data em uma célula no Excel e os dados são migrados para o Word, a data vem na formatação diferente do padrão. Usei duas fórmulas para tratar no Excel para texto que pode auxiliar caso precise:
Converter moeda em texto:
=TEXTO(A1;"[$R$-pt-BR] #.###,00")
Converter data em texto
=TEXTO(A1;"dd/mm/yyyy")