Criar Documentos no Word com VBA no Excel: Passo-a-passo

Você já imaginou criar documentos no Word com VBA no Excel? Com VBA (Visual Basic for Applications), isso é possível! Automatizar a criação de relatórios, contratos, propostas e outros documentos economiza tempo, reduz erros e garante padronização, tornando o seu trabalho muito mais eficiente.

Download Planilha Como Criar Word com Excel VBA

Clique no botão abaixo para realizar o  download da planilha de manutenção de carros no Excel, com exemplo de dados:

Baixe a planilha

Por que Automatizar Documentos com VBA Excel?

A automação de documentos com VBA (Visual Basic for Applications) no Excel é uma solução poderosa para economizar tempo, reduzir erros e aumentar a produtividade. Muitas empresas e profissionais lidam diariamente com tarefas repetitivas, como geração de relatórios, preenchimento de formulários e organização de dados. Com VBA, essas atividades podem ser automatizadas, tornando o processo mais rápido, preciso e eficiente.

Benefícios da Automação de Documentos com VBA

Agilidade e Eficiência
Com VBA, você pode gerar relatórios, contratos, propostas e outros documentos em segundos, sem precisar copiar e colar informações manualmente.

Redução de Erros Humanos
A automação elimina falhas comuns, como digitação incorreta e informações duplicadas, garantindo documentos mais precisos e padronizados.

Padronização e Profissionalismo
Criar modelos automáticos de documentos garante um formato consistente e profissional, essencial para a credibilidade da empresa.

Integração com Outras Aplicações
O VBA permite conectar o Excel a outros softwares, como Word, Outlook e bancos de dados, automatizando fluxos de trabalho completos.

Facilidade de Uso
Mesmo sem conhecimentos avançados em programação, é possível criar macros e scripts VBA que tornam o dia a dia mais produtivo.

Geração de Documentos Word com VBA Excel

Neste exemplo de automação de criação de documentos Word você aprenderá como alterar dados de documentos Word automaticamente pelo Excel com VBA.

A planilha funciona da seguinte forma:

  1. Na primeira parte clique em Mudar Arquivo e selecione o arquivo word que terá partes substituídas.
  2. Na coluna campos, coloque os campos qu serão substituídos, recomendo colocar um coringa como $ antes do nome ou outro, pois ele irá procurar e substituir estes valores.
  3. Em dados preencha os dados que serão substituídos no arquivo Word.
  4. E em Formato coloque o formato que deseja que apareça a informação no contrato. Para valores pode colocar R$ 0,000.00, e para datas dd/mm/yyyy. O formato é em inglês por conta do VBA.
criar word vba excel 1

Documento Word para Automação VBA Excel

Na automação de alterações de contratos Word com VBA Excel faça conforme temos abaixo.

Veja que temos as informações com os coringas.

Pode pedir para que o Chatgpt crie um documento ou altere ele conforme precisar.

criar word vba excel 2

Código VBA para Automação de Word Excel

Abaixo preparamos e disponibilizamos o código VBA para automação de Word no Excel.

O código está totalmente comentado e identado para facilitar a leitura, mas a planilha já está totalmente funcional.

criar word vba excel 3

Código para Selecionar Arquivos

O código abaixo selecione o arquivo e retorna a informação em uma célula do Excel.

'Procedimento para selecionar arquivos
Sub lsSelecionarDocumento()
    On Error GoTo Sair
    
    Dim fDlg As FileDialog
    Dim lArquivo As String

    Documentos.Unprotect

    'Chama o objeto passando os parâmetros
    Set fDlg = Application.FileDialog(FileDialogType:=msoFileDialogOpen)
    With fDlg
        'Alterar esta propriedade para True permitirá a seleção de vários arquivos
        .AllowMultiSelect = False

        'Determina a forma de visualização dos aruqivos
        .InitialView = msoFileDialogViewDetails

        'Filtro de arquivos, pode ser colocado mais do que um filtro separando com ; por exemplo: "*.xls;*.xlsm"
        .Filters.Add "Word", "*.docx", 1

        'Determina qual o drive inicial
        .InitialFileName = Documentos.Range("contrato_locacao").Value
    End With

    'Retorna o arquivo selecionado
    If fDlg.Show = -1 Then
        lArquivo = fDlg.SelectedItems(1)
        Documentos.Range("contrato_locacao").Value = lArquivo
    Else
        MsgBox "Não foi selecionado nenhum arquivo"
    End If

Sair:
    Documentos.Protect
End Sub

Código VBA para Processar Contrato

No código abaixo ele irá processar o arquivo substituindo as informações, todas as informações da coliuna com os campos e valores que estão ao lado dos campos.

Sub lsProcessarContrato()
    frmProgresso.Show
End Sub

Sub lsGerarContrato()
    On Error GoTo TratarErro
    
    Dim objWord             As Object
    Dim objDoc              As Object
    Dim caminhoDocumento    As String
    Dim nome                As String
    Dim valor               As String
    Dim campo               As String
    Dim rng                 As Range
    Dim nomeArquivoNovo     As String
    Dim formato             As String
    Dim nomeArquivo         As String
    
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Application.EnableAnimations = False
    
    'Limpa erros de modo seguro word
    LimparErrosModoSeguroWord
    
    ' Caminho do documento Word
    caminhoDocumento = Documentos.Range("contrato_locacao").Value ' Altere para o caminho do seu documento
    
    ' Extrair o nome do arquivo
    nomeArquivo = Mid(caminhoDocumento, InStrRev(caminhoDocumento, "\") + 1)
    
    ' Inicia uma nova instância do Word
    On Error Resume Next
    Set objWord = CreateObject("Word.Application")
    On Error GoTo 0
    
    If objWord Is Nothing Then
        MsgBox "O Word não está instalado ou não pode ser iniciado.", vbExclamation
        Exit Sub
    End If
    
    ' Torna o Word visível (opcional)
    objWord.Visible = True
    
    ' Abre o documento especificado
    Set objDoc = objWord.Documents.Open(caminhoDocumento)
    
    Set rng = Documentos.Range("B9", Documentos.Cells(Documentos.Rows.Count, "B").End(xlUp))
    
    frmProgresso.ProgressBar1.Min = 0
    frmProgresso.ProgressBar1.Max = rng.Count
    frmProgresso.ProgressBar1.Value = 0
    
    For Each celula In rng
        frmProgresso.ProgressBar1.Value = frmProgresso.ProgressBar1.Value + 1
        
        campo = celula.Value2 ' Chave
        valor = celula.Offset(0, 1).Value ' Valor
        formato = celula.Offset(0, 2).Value ' Formato
        
        If formato <> "" And valor <> "" Then
            valor = Format(valor, formato)
        End If
        
        With objDoc.Content.Find
            .Text = campo
            .Replacement.Text = valor
            .Wrap = 1 ' wdFindContinue
            .Execute Replace:=2 ' wdReplaceAll
        End With
    Next celula
    
    ' Salva o documento (opcional)
    'objDoc.Save
    nomeArquivoNovo = "Contrato " & Documentos.Range("nome_arquivo").Value2
    caminhoSalvar = ThisWorkbook.Path & "\Contrato"
    
    If Dir(caminhoSalvar, vbDirectory) = "" Then
        ' Cria a pasta caso ela não exista
        MkDir caminhoSalvar
    End If
            
    lsFecharDocWord caminhoSalvar & "\" & fnLimparNomeArquivo(nomeArquivoNovo)
            
    objDoc.SaveAs2 Filename:=caminhoSalvar & "\" & fnLimparNomeArquivo(nomeArquivoNovo)
    
    ' Fecha o documento (opcional)
     objDoc.Close
     objWord.Quit
    
Sair:
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    Application.EnableAnimations = True
    
    ' Libera os objetos
    Set objDoc = Nothing
    Set objWord = Nothing
        
    MsgBox "Contrato Gerado em: " & caminhoSalvar & "\" & fnLimparNomeArquivo(nomeArquivoNovo), vbInformation
    Exit Sub
TratarErro:
    MsgBox Err.Description
    GoTo Sair
End Sub

Function fnLimparNomeArquivo(nomeOriginal As String) As String
    Dim caracteresInvalidos As String
    Dim nomeLimpo As String
    Dim i As Integer

    ' Lista de caracteres inválidos para nomes de arquivos no Windows
    caracteresInvalidos = "\/:*?""<>|"

    ' Inicializa o nome limpo com o nome original
    nomeLimpo = nomeOriginal

    ' Remove caracteres inválidos
    For i = 1 To Len(caracteresInvalidos)
        nomeLimpo = Replace(nomeLimpo, Mid(caracteresInvalidos, i, 1), "")
    Next i

    ' Retorna o nome limpo
    fnLimparNomeArquivo = nomeLimpo
End Function

Sub lsFecharDocWord(caminhoCompleto As String)
    Dim doc As Object
    Dim documentoEncontrado As Boolean

    On Error Resume Next ' Ignora erros para evitar interrupções

    ' Percorre todos os documentos abertos no Word
    For Each doc In Application.Documents
        If doc.FullName = caminhoCompleto Then
            ' Fecha o documento sem salvar alterações
            doc.Close SaveChanges:=False
            Exit For
        End If
    Next doc

    On Error GoTo 0 ' Restaura o tratamento padrão de erros

End Sub

Sub LimparErrosModoSeguroWord()
    Dim wordApp As Object

    On Error Resume Next ' Ignora erros temporariamente

    ' Fechar todas as instâncias abertas do Word
    Do
        Set wordApp = GetObject(, "Word.Application")
        If Not wordApp Is Nothing Then
            wordApp.Quit SaveChanges:=False
            Set wordApp = Nothing
        Else
            Exit Do
        End If
    Loop

    On Error GoTo 0 ' Restaurar o tratamento normal de erros
End Sub

Download Planilha Como Criar Word com Excel VBA

Clique no botão abaixo para realizar o  download da planilha de manutenção de carros no Excel, com exemplo de dados:

Baixe a planilha

5/5 - (Total de avaliações: 1)

Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel

plugins premium WordPress