Você precisa de uma macro no Word que salve seu documento automaticamente com um nome de arquivo seguindo um padrão específico, como ProjetoNome_Data_Versao.docx. O recurso AutoRecuperação nativo do Word não permite nomes personalizados e salva apenas em um local fixo. Este artigo explica como escrever uma macro VBA que cria um nome de arquivo personalizado a partir do conteúdo do documento, da data atual e de um número de versão. Você aprenderá a estrutura do código, como instalá-lo e como acioná-lo ao salvar ou por temporizador.
Principais Pontos: Criando uma Macro de Salvamento Automático Personalizado no Word VBA
- Alt+F11 (Editor VBA): Abra o editor para inserir e editar o código da macro.
- Arquivo > Opções > Personalizar Faixa de Opções > Desenvolvedor: Habilite a guia Desenvolvedor para acessar ferramentas de macro.
- Document.BuiltInDocumentProperties: Use este objeto para extrair o título ou assunto das propriedades do documento para o nome do arquivo.
- Format(Date, “yyyymmdd”): Gere uma string de data em formato consistente para o nome do arquivo.
- Application.OnTime: Agende a macro para executar em um temporizador repetitivo para salvamentos automáticos.
Como Funciona a Macro de Salvamento Automático e o Que Você Precisa
A macro usa o VBA (Visual Basic for Applications) do Word para construir um nome de arquivo a partir de partes dinâmicas e então salvar o documento em uma pasta escolhida. A lógica central lê as propriedades internas do documento atual, como Título ou Assunto, adiciona a data atual usando a função Format e, opcionalmente, incrementa um número de versão armazenado em uma propriedade personalizada do documento ou em um arquivo de texto separado.
Antes de escrever a macro, você deve habilitar a guia Desenvolvedor no Word. Vá em Arquivo > Opções > Personalizar Faixa de Opções, marque a caixa Desenvolvedor no painel direito e clique em OK. Esta guia dá acesso ao editor VBA, gravação de macro e controles de formulário.
Pré-requisitos para a Macro
A macro depende dos seguintes elementos:
- Propriedades do Documento: Defina um Título ou Assunto em Arquivo > Informações > Propriedades > Propriedades Avançadas. A macro lê esses dados para construir o nome do arquivo.
- Uma Pasta de Salvamento: Escolha um caminho de pasta onde a macro salvará os arquivos. Use um caminho fixo como “C:\MeusAutoSaves” ou um compartilhamento de rede.
- Segurança de Macro: Defina a segurança de macro para permitir macros assinadas ou confiáveis. Vá em Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Configurações de Macro, e selecione “Habilitar todas as macros” apenas para teste.
Passos para Escrever e Instalar a Macro de Salvamento Automático
Os passos a seguir criam uma macro que constrói um nome de arquivo a partir do título do documento, da data atual e de um número de versão. A macro salva o documento em uma pasta que você especificar.
- Abra o Editor VBA
Pressione Alt+F11 para abrir o editor VBA. No painel do Explorador de Projetos, expanda Normal > Módulos. Clique com o botão direito em Módulos e escolha Inserir > Módulo. Uma janela de código em branco aparece. - Escreva a sub-rotina principal de salvamento automático
Cole o seguinte código na janela do módulo:Sub AutoSaveCustom()
Dim doc As Document
Set doc = ActiveDocumentDim baseName As String
baseName = doc.BuiltInDocumentProperties(wdPropertyTitle)
If baseName = "" Then baseName = "SemTitulo"Dim dateStr As String
dateStr = Format(Date, "yyyymmdd")Dim versionNum As Long
versionNum = GetNextVersionNumberDim folderPath As String
folderPath = "C:\MeusAutoSaves\"Dim fullName As String
fullName = folderPath & baseName & "_" & dateStr & "_v" & versionNum & ".docx"Application.DisplayAlerts = False
doc.SaveAs2 FileName:=fullName, FileFormat:=wdFormatXMLDocument
Application.DisplayAlerts = True
End Sub - Adicione uma função auxiliar para números de versão
Abaixo da sub-rotina, cole esta função para ler e incrementar um contador de versão armazenado em uma propriedade personalizada do documento:Function GetNextVersionNumber() As Long
Dim cp As DocumentProperty
On Error Resume Next
Set cp = ActiveDocument.CustomDocumentProperties("Versao"))
If Err.Number <> 0 Then
ActiveDocument.CustomDocumentProperties.Add Name:="Versao", _
LinkToContent:=False, Type:=msoPropertyTypeNumber, Value:=1
GetNextVersionNumber = 1
Else
GetNextVersionNumber = cp.Value + 1
cp.Value = GetNextVersionNumber
End If
On Error GoTo 0
End Function
Nota: A propriedade personalizada “Versao” é criada no primeiro uso. Cada salvamento a incrementa em um. - Execute a macro manualmente para testar
Feche o editor VBA. Pressione Alt+F8, selecione AutoSaveCustom e clique em Executar. O documento é salvo na pasta especificada. Verifique se o nome do arquivo segue o padrão, por exemplo “Relatorio_20250321_v3.docx”. - Configure a macro para executar automaticamente ao salvar
Para acionar a macro cada vez que você pressionar Ctrl+S, renomeie a sub-rotina para Document_Save. No entanto, um método mais simples é associar a macro a um atalho de teclado. Vá em Arquivo > Opções > Personalizar Faixa de Opções > Personalizar (ao lado de Atalhos do teclado). Na lista Categorias, selecione Macros. Na lista Comandos, selecione AutoSaveCustom. Pressione uma nova tecla de atalho como Ctrl+Shift+S e clique em Atribuir. - Agende a macro em um temporizador para salvamentos automáticos
Adicione esta sub-rotina ao mesmo módulo para executar AutoSaveCustom a cada 5 minutos:Sub StartAutoSaveTimer()
Application.OnTime When:=Now + TimeValue("00:05:00"), _
Name:="AutoSaveCustom"
End Sub
Execute StartAutoSaveTimer uma vez. A macro é executada após 5 minutos e então para. Para torná-la repetitiva, adicione uma chamada a StartAutoSaveTimer no final de AutoSaveCustom.
Erros Comuns e Ajustes
A macro não executa devido às configurações de segurança
Se a macro não executar, verifique a segurança de macro. Vá em Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Configurações de Macro. Selecione “Habilitar todas as macros” para teste. Para produção, assine digitalmente a macro ou armazene-a em um local confiável.
O nome do arquivo contém caracteres inválidos do título do documento
Os títulos dos documentos podem incluir caracteres que o Windows não permite em nomes de arquivo, como / : ? ” < > |. Adicione uma função de sanitização que substitua esses caracteres por sublinhado. Insira esta função no módulo e chame-a antes de construir o nome do arquivo:
Function SanitizarNomeArquivo(ByVal texto As String) As String
Dim caracteresInvalidos As String
caracteresInvalidos = "\/:?""<>|"
Dim i As Integer
For i = 1 To Len(caracteresInvalidos)
texto = Replace(texto, Mid(caracteresInvalidos, i, 1), "_")
Next i
SanitizarNomeArquivo = texto
End Function
O número da versão é reiniciado após fechar o documento
A propriedade personalizada do documento “Versao” é armazenada dentro do documento. Quando você fecha e reabre o documento, a propriedade persiste. Se iniciar um novo documento, o contador de versão começa em 1. Para manter um contador global entre documentos, armazene o contador em um arquivo de texto no disco e leia-o com o FileSystemObject do VBA.
Macro VBA de Salvamento Automático vs. AutoRecuperação Nativa
| Item | Macro VBA de Salvamento Automático | AutoRecuperação Nativa |
|---|---|---|
| Controle do nome do arquivo | Padrão personalizado completo | Nomes fixos (Backup de…) |
| Local de salvamento | Qualquer pasta que você especificar | Pasta fixa de AutoRecuperação |
| Numeração de versão | Incremento automático | Não disponível |
| Agendamento | Temporizador ou atalho manual | Intervalo fixo (1-120 minutos) |
| Recuperação em caso de falha | Reabertura manual do último salvamento | Solicitação automática na reinicialização |
A macro VBA oferece controle total sobre o padrão do nome do arquivo e o local de salvamento. A AutoRecuperação nativa é mais simples e recupera trabalhos não salvos após uma falha. Para máxima segurança, use ambas: mantenha a AutoRecuperação habilitada para recuperação de falhas e execute a macro VBA para backups versionados.
Agora você pode criar uma macro VBA no Word que salva seu documento com um padrão de nome personalizado usando o título do documento, data e número de versão. Comece testando a macro em um documento de exemplo com um caminho de pasta simples. Após verificar a saída, associe a macro a um atalho de teclado ou a um temporizador para automatizar seu fluxo de backup. Para cenários avançados, estenda a macro para salvar em uma unidade de rede ou adicionar um carimbo de data/hora ao nome do arquivo.