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:
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:
- Na primeira parte clique em Mudar Arquivo e selecione o arquivo word que terá partes substituídas.
- 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.
- Em dados preencha os dados que serão substituídos no arquivo Word.
- 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.
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.
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.
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: