Como Executar Mala Direta a Partir de uma Macro no Word
🔍 WiseChecker

Como Executar Mala Direta a Partir de uma Macro no Word

Você precisa automatizar uma mala direta no Word sem clicar na faixa de opções toda vez. Executar uma mala direta a partir de uma macro permite gerar centenas de cartas, e-mails ou etiquetas personalizadas com um único comando. Este artigo explica como escrever e executar uma macro VBA que realiza uma mala direta completa do início ao fim. Você aprenderá os objetos necessários, a estrutura do código passo a passo e como evitar erros comuns de automação.

Principais Conclusões: Automatizando Mala Direta com Macros VBA

  • Objeto MailMerge e MainDocumentType: Defina o tipo de mesclagem como cartas, e-mails ou etiquetas antes de executar a mesclagem.
  • Método OpenDataSource: Aponte a macro para seu arquivo de fonte de dados do Excel ou Access usando o caminho completo do arquivo.
  • Método Execute: Execute a mesclagem para um novo documento, impressora ou e-mail sem exibir o assistente.

ADVERTISEMENT

O que o Modelo de Objeto MailMerge no VBA do Word Faz

O VBA do Word expõe o recurso de mala direta através do objeto MailMerge, que é um filho do objeto Document. Esse objeto controla todos os aspectos de uma mesclagem: o tipo de documento principal, a fonte de dados, os campos de mesclagem e o destino da saída. Antes de escrever qualquer código, você precisa entender três elementos centrais.

O primeiro elemento é a propriedade MainDocumentType. Ela informa ao Word qual tipo de mesclagem você está realizando. As opções incluem wdFormLetters, wdMailingLabels, wdEnvelopes, wdCatalog e wdEMail. Definir essa propriedade corretamente garante que o Word construa a estrutura de saída adequada.

O segundo elemento é a fonte de dados. O método OpenDataSource conecta seu documento principal a um arquivo externo. Esse arquivo pode ser uma pasta de trabalho do Excel, um banco de dados do Access, um arquivo CSV ou uma pasta de contatos do Outlook. Você deve fornecer o caminho completo para o arquivo. Se a fonte de dados tiver várias planilhas ou tabelas, você também especifica o parâmetro SQLStatement para selecionar o intervalo correto.

O terceiro elemento é o método Execute. Esse método executa a mesclagem e envia a saída para um dos vários destinos: um novo documento (wdSendToNewDocument), a impressora (wdSendToPrinter) ou e-mail (wdSendToEmail). Você também pode suprimir os prompts definindo ShowWizard como False e SuppressBlankLines como True.

Pré-requisitos para Executar uma Macro de Mala Direta

Você precisa de um documento principal que já contenha campos de mesclagem. A macro não insere campos para você. Abra o documento principal no Word e insira os campos usando a guia Correspondências ou digitando «NomeDoCampo» manualmente. A fonte de dados deve estar acessível no caminho de arquivo especificado na macro. Se a fonte de dados for um arquivo do Excel, use um intervalo nomeado ou uma referência de planilha como Planilha1$.

Habilite macros no Word antes de executar o código. Vá em Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Configurações de Macro. Selecione Habilitar todas as macros. Essa não é uma configuração segura para ambientes de produção, portanto, desabilite-a após os testes.

Passos para Escrever e Executar uma Macro de Mala Direta no Word

A macro a seguir realiza uma mala direta para um novo documento usando uma fonte de dados do Excel. Ajuste os caminhos de arquivo e nomes de planilha para corresponder ao seu ambiente.

  1. Abra o Editor VBA
    Pressione Alt+F11 no Word. O editor do Visual Basic for Applications é aberto. Se o Project Explorer não estiver visível, pressione Ctrl+R para exibi-lo.
  2. Insira um novo módulo
    No Project Explorer, clique com o botão direito em Normal ou no projeto do seu documento atual. Escolha Inserir > Módulo. Uma janela de código em branco aparece.
  3. Cole o código da macro
    Copie e cole o seguinte código na janela do módulo:
    Sub ExecutarMalaDiretaParaNovoDoc()
        Dim mainDoc As Document
        Set mainDoc = ActiveDocument
        
        With mainDoc.MailMerge
            .MainDocumentType = wdFormLetters
            .OpenDataSource _
                Name:="C:\Dados\Clientes.xlsx", _
                SQLStatement:="SELECT * FROM [Planilha1$]", _
                SubType:=wdMergeSubTypeWord2000
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            .Execute Pause:=False
        End With
        
        Set mainDoc = Nothing
    End Sub
    

    Substitua C:\Dados\Clientes.xlsx pelo caminho completo da sua fonte de dados. Substitua [Planilha1$] pelo nome correto da planilha ou intervalo nomeado.

  4. Execute a macro
    Pressione F5 enquanto o cursor está dentro da macro. O Word se conecta à fonte de dados, mescla todos os registros e cria um novo documento contendo as cartas mescladas.
  5. Salve o documento mesclado
    O novo documento não está salvo. Pressione Ctrl+S para salvá-lo com um novo nome. O documento principal original permanece inalterado.

Modificando a Macro para Saída em E-mail ou Impressora

Para enviar a saída da mesclagem diretamente para a impressora, altere a linha Destination para .Destination = wdSendToPrinter. Para enviar como e-mail, altere para .Destination = wdSendToEmail e adicione as seguintes linhas antes de .Execute:

.MailSubject = "Sua linha de assunto aqui"
.MailAddressFieldName = "Email"

O MailAddressFieldName deve corresponder ao nome da coluna em sua fonte de dados que contém os endereços de e-mail.

ADVERTISEMENT

Erros Comuns de Automação e Como Corrigi-los

Word Não Consegue Encontrar o Arquivo da Fonte de Dados

A macro falha com o erro 5152 ou uma mensagem de que o arquivo não pode ser aberto. Isso ocorre quando o caminho do arquivo no método OpenDataSource está incorreto ou o arquivo está bloqueado por outro processo. Verifique se o caminho existe e se o arquivo não está aberto no Excel. Use apenas caminhos absolutos. Evite caminhos com espaços, a menos que você envolva todo o caminho entre aspas.

A Mesclagem é Executada, mas Produz Documentos em Branco

Saída em branco geralmente significa que os campos de mesclagem no documento principal não correspondem aos nomes das colunas na fonte de dados. Verifique os nomes dos campos pressionando Alt+F9 no documento principal para revelar os códigos de campo. Por exemplo, { MERGEFIELD PrimeiroNome } deve corresponder a uma coluna chamada PrimeiroNome na fonte de dados. Maiúsculas/minúsculas não importam, mas a ortografia deve ser exata.

Macro Para com Erro de Permissão

O Word pode bloquear a macro se o documento não estiver em um local confiável ou se a segurança de macro estiver muito alta. Mova o documento principal para uma pasta confiável. Vá em Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Locais Confiáveis. Adicione a pasta que contém seu documento principal. Alternativamente, assine digitalmente a macro para executá-la sem reduzir a segurança.

Mala Direta Manual vs. Mala Direta com Macro

Item Mala Direta Manual Mala Direta com Macro
Tempo de configuração Requer clicar em 5+ etapas da faixa de opções Um clique após a configuração inicial do VBA
Repetibilidade Deve repetir o assistente para cada novo conjunto de dados A mesma macro funciona para qualquer fonte de dados
Tratamento de erros Word exibe caixas de diálogo para dados ausentes A macro para ou ignora registros silenciosamente
Flexibilidade de saída Escolher destino a cada vez Destino é codificado na macro
Habilidade necessária Nenhum conhecimento de programação Conhecimento básico de VBA necessário

A mala direta manual funciona bem para uso ocasional. A mesclagem com macro economiza tempo quando você executa a mesma mesclagem semanalmente ou diariamente. A abordagem com macro também permite combinar várias etapas de mesclagem em um único processo automatizado, como gerar cartas e depois salvar cada uma como PDF separado.

Agora você pode escrever uma macro VBA que abre uma fonte de dados, define o tipo de mesclagem e executa a mesclagem para um novo documento, impressora ou e-mail. Teste a macro com um conjunto de dados pequeno primeiro para confirmar o mapeamento dos campos. Para automação avançada, explore a coleção MailMergeDataFields para verificar dinamicamente quais campos existem antes de executar a mesclagem. Isso evita erros em tempo de execução quando a estrutura da fonte de dados muda.

ADVERTISEMENT