Como Salvar a Saída da Mala Direta do Word com Padrão de Nome Personalizado
🔍 WiseChecker

Como Salvar a Saída da Mala Direta do Word com Padrão de Nome Personalizado

Ao executar uma mala direta no Word, a saída padrão é um único documento com uma página por registro. Salvar cada registro como um arquivo separado com um padrão de nome personalizado — como “Invoice_12345_JohnDoe.docx” — exige algumas etapas extras. O Word não oferece uma caixa de diálogo nativa para nomear arquivos mesclados automaticamente. Este artigo explica como usar uma macro VBA para salvar cada registro mesclado com um nome de arquivo que combina texto fixo e valores de campos da sua fonte de dados.

Principais Conclusões: Salvando a Saída da Mala Direta com Nomes Personalizados

  • Alt+F11 para abrir o editor VBA: Acesse o ambiente de macros onde você escreverá o código de automação de nomes de arquivos.
  • MailMerge.DataSource.DataFields(“NomeDoCampo”).Value: Sintaxe VBA para recuperar o valor de um campo específico do registro de mesclagem atual para uso no nome do arquivo.
  • ActiveDocument.SaveAs2 FileName:=caminho & nome_arquivo: Comando que salva o registro atual como um novo documento com o nome personalizado.

ADVERTISEMENT

Como o Word Lida com a Saída da Mala Direta

Por padrão, o recurso de mala direta do Word gera todos os registros em um único documento contínuo. Cada registro começa em uma nova página ou quebra de seção. Esse documento único é adequado para impressão ou envio por e-mail em lote, mas não cria arquivos individuais. Para salvar cada registro como um arquivo separado com um padrão de nome personalizado — por exemplo, combinando um ID de registro com um nome — você precisa automatizar o processo com uma macro. A macro percorre cada registro, extrai valores de campos, monta uma string de nome de arquivo e salva o registro atual usando o método SaveAs2. Antes de escrever a macro, você deve concluir a configuração da mala direta: conectar-se à fonte de dados, inserir campos de mesclagem no documento principal e visualizar os resultados para confirmar que os campos aparecem corretamente.

Pré-requisitos para a Macro

Antes de executar a macro, confirme os seguintes itens:

  • Sua fonte de dados (planilha do Excel, banco de dados do Access, contatos do Outlook ou outro) está conectada ao documento principal.
  • Os campos de mesclagem estão inseridos no documento onde você deseja que os componentes do nome do arquivo apareçam.
  • Você conhece os nomes exatos dos campos que usará no padrão de nome. Os nomes dos campos diferenciam maiúsculas de minúsculas no VBA.
  • Você tem uma pasta de destino onde os novos arquivos serão salvos. Crie a pasta se ela não existir.
  • As configurações de segurança de macro permitem executar código VBA. Defina como Habilitar todas as macros temporariamente ou assine digitalmente sua macro.

ADVERTISEMENT

Etapas para Criar e Executar a Macro de Nome Personalizado

Siga estas etapas para escrever uma macro que salva cada registro de mala direta com um padrão de nome personalizado.

  1. Abra o editor VBA
    Pressione Alt+F11 no Word para abrir o editor Visual Basic for Applications. Se o editor abrir mas nenhum projeto estiver visível, expanda Normal ou Project (MailMergeDocument) no painel esquerdo.
  2. Insira um novo módulo
    No editor VBA, clique em Insert na barra de menus e selecione Module. Uma janela de código em branco aparece.
  3. Escreva o código da macro
    Copie e cole o código a seguir na janela do módulo. Substitua os valores de espaço reservado pelo seu próprio caminho de pasta e nomes de campos.
    Sub SaveMergeWithCustomFilename()
        Dim MainDoc As Document
        Dim i As Integer
        Dim FolderPath As String
        Dim FileName As String
        Dim FieldValue1 As String
        Dim FieldValue2 As String
        
        ' Defina a pasta de destino — altere este caminho
        FolderPath = "C:\MailMergeOutput\"
        
        ' Garanta que o caminho da pasta termine com barra invertida
        If Right(FolderPath, 1) <> "\" Then
            FolderPath = FolderPath & "\"
        End If
        
        Set MainDoc = ActiveDocument
        
        With MainDoc.MailMerge
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            For i = 1 To .DataSource.RecordCount
                .DataSource.FirstRecord = i
                .DataSource.LastRecord = i
                ' Executa a mesclagem para o registro único
                .Execute Pause:=False
                ' Obtém valores dos campos para o nome do arquivo
                FieldValue1 = .DataSource.DataFields("CustomerID").Value
                FieldValue2 = .DataSource.DataFields("LastName").Value
                ' Monta o nome do arquivo — ajuste o padrão conforme necessário
                FileName = "Invoice_" & FieldValue1 & "_" & FieldValue2 & ".docx"
                ' Salva o documento resultante
                ActiveDocument.SaveAs2 FileName:=FolderPath & FileName
                ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
            Next i
        End With
        
        Set MainDoc = Nothing
        MsgBox "Mesclagem concluída. Arquivos salvos em " & FolderPath
    End Sub
    
  4. Ajuste os nomes dos campos e o padrão de nome
    No código, altere CustomerID e LastName para corresponder aos nomes reais dos campos em sua fonte de dados. Modifique a linha FileName para corresponder ao padrão desejado. Por exemplo, "Letter_" & FieldValue1 & "_" & FieldValue2 & ".docx" produz nomes como Letter_102_Smith.docx.
  5. Execute a macro
    Feche o editor VBA e retorne ao Word. Pressione Alt+F8 para abrir a caixa de diálogo Macros. Selecione SaveMergeWithCustomFilename na lista e clique em Executar. O Word processa cada registro e salva arquivos individuais na pasta especificada.
  6. Verifique os arquivos de saída
    Abra a pasta de destino. Confirme se cada arquivo existe e se os nomes correspondem ao seu padrão. Abra alguns arquivos para verificar se o conteúdo corresponde ao registro correto.

Problemas Comuns e Como Resolvê-los

Erro “Subscrito fora do intervalo” ao executar a macro

Esse erro ocorre quando o nome do campo na macro não corresponde a um campo em sua fonte de dados. Abra sua fonte de dados e anote os cabeçalhos exatos das colunas. Atualize os nomes dos campos na macro para corresponder a esses cabeçalhos. Se sua fonte de dados usar cabeçalhos com espaços, coloque o nome entre colchetes, por exemplo .DataFields("[First Name]").Value.

Arquivos são salvos, mas o conteúdo está em branco ou incompleto

A macro pode estar executando a mesclagem antes que o documento principal esteja totalmente conectado à fonte de dados. Certifique-se de ter executado uma mesclagem de teste para um novo documento pelo menos uma vez antes de executar a macro. Confirme também que o documento principal da mala direta é o documento ativo quando você executa a macro.

A macro não aparece na caixa de diálogo Macros

A macro não aparecerá se você colocou o código em um módulo de documento em vez de um módulo padrão. No editor VBA, clique com o botão direito no módulo que contém seu código e verifique se ele está listado em Normal ou no projeto do seu documento. Se estiver no projeto do documento, a macro estará disponível apenas quando esse documento estiver aberto.

Nomes de arquivo contêm caracteres inválidos como dois-pontos ou barras

O Windows não permite certos caracteres em nomes de arquivo. Se sua fonte de dados contiver valores com caracteres como : / \ ? " < > |, o método SaveAs2 falhará. Adicione uma linha na macro para substituir esses caracteres antes de montar o nome do arquivo. Por exemplo: FieldValue1 = Replace(FieldValue1, ":", "").

ADVERTISEMENT

Comparação de Métodos de Saída da Mala Direta

Item Mesclagem Padrão para Novo Documento Macro com Padrão de Nome Personalizado
Formato de saída Documento único com todos os registros Um arquivo por registro
Controle do nome do arquivo Nenhum — usuário salva manualmente Controle total usando valores de campos
Tempo de configuração Nenhum 15–30 minutos para criação da macro
Repetibilidade Salvamento manual a cada vez Executar macro para qualquer fonte de dados
Tratamento de erros Usuário corrige problemas manualmente Requer depuração VBA

Agora você pode salvar cada registro de mala direta como um arquivo separado com um padrão de nome personalizado usando a macro fornecida. Teste a macro com um conjunto de dados pequeno primeiro para confirmar que o padrão de nome funciona corretamente. Para uso avançado, modifique a macro para incluir carimbos de data, números sequenciais ou lógica condicional baseada em valores de campos. A chave para uma saída confiável é corresponder exatamente os nomes dos campos e garantir que a pasta de destino exista antes de executar a macro.

ADVERTISEMENT