Bem-vindo ao nosso Mega-Guia Word VBA / Macros!
Esta página contém:
-
- PDF do tutorial do Word VBA (download grátis)
- “Cheat Sheet” do Word VBA contendo uma lista dos trechos de código do Word VBA mais comumente usados
- Tutorial de VBA / Macro em Word completo.
- Lista pesquisável de todos os nossos tutoriais de macro VBA do Word
Você também pode estar interessado em nosso Tutorial interativo de VBA para Excel. Embora alguns dos exemplos / exercícios sejam específicos do Excel VBA, muito do conteúdo é genérico para todos os VBA e você pode achar útil aprender conceitos como instruções If, Loops, MessageBoxes e muito mais.
VBA PDF (downloads gratuitos)
Baixe nosso Tutorial VBA do Microsoft Word grátis! Ou Tutoriais VBA para outros programas do Office!
Download
Exemplos de palavras VBA “CheatSheet”
Abaixo, você encontrará exemplos de código VBA simples para trabalhar com o Microsoft Word.
Selecionar / ir para
DescriçãoCódigo VBABackspaceSelection.TypeBackspaceSelecione o documento inteiroSelection.HomeKey Unit: = wdStorySelection.Extendcópia deSelection.CopyExcluirSelection.Delete Unit: = wdCharacter, Count: = 1Inserir depoisSelection.InsertAfter “text”Começo da linhaSelection.HomeKey Unit: = wdLineFim da linhaSelection.EndKey Unit: = wdLineColarSelection.PasteSelecionar tudoSelection.WholeStorySelecione a linha inteiraSelection.EndKey Unit: = wdLine, Extend: = wdExtendMover parágrafo para cimaUnidade Selection.MoveUp: = wdParagraph, Count: = 1Mover um caractere para a direitaUnidade Selection.MoveRight: = wdCharacter, Contagem: = 1Mover uma célula para a direita na tabelaUnidade Selection.MoveRight: = wdCellVá para o início do documentoSelection.HomeKey Unit: = wdStoryIr para o final do documentoSelection.EndKey Unit: = wdStoryVá para a página 1Selection.GoTo What: = wdGoToPage, que: = wdGoToNext, Name: = ”1 ″Vá para o topo da páginaSelection.GoTo What: = wdGoToBookmark, Name: = ”\ Page”
Selection.MoveLeft Unit: = wdCharacter, Count: = 1
Retornar ao topo
Favoritos
DescriçãoCódigo VBAAdicionarCom ActiveDocument.Bookmarks.Adicionar intervalo: = Selection.Range, Name: = ”Nome”
.DefaultSorting = wdSortByName
.ShowHidden = False
Terminar comContarDim n as Integer
n = ActiveDocument.Bookmarks.CountExcluirActiveDocument.Bookmarks (“BookmarkName”). DeleteExiste?Se ActiveDocument.Bookmarks.Exists (“BookmarkName”) = True, então
'Faça alguma coisa
Fim seVamos paraSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”SelecioneActiveDocument.Bookmarks (“BookmarkName”). SelecioneSubstituir TextoSelection.GoTo What: = wdGoToBookmark, Name: = ”BookmarkName”
Selection.Delete Unit: = wdCharacter, Count: = 1
Selection.InsertAfter “Novo Texto”
ActiveDocument.Bookmarks.Add Range: = Selection.Range, _
Nome: = ”BookmarkName”
Retornar ao topo
Documento
DescriçãoCódigo VBAAtivarDocumentos (“Exemplo.doc”). AtiveAdicionar à VariávelDim doc As DocumentSet doc = Documents.AddAdicionarDocumentos.AdicionarAdicionar (de outro documento)Documentos.Adicionar modelo: = ”C: \ Formulários \ FormDoc.doc”, _
NewTemplate: = FalseFecharDocumentos (“Exemplo.doc”). FecharFechar - Salvar alteraçõesDocumentos (“Example.doc”). Feche SaveChanges: = wdSaveChangesFechar - Não SalvarDocumentos (“Example.doc”). Feche SaveChanges: = wdDoNotSaveChangesFechar - Solicitar para SalvarDocumentos (“Example.doc”). Feche SaveChanges: = wdPromptToSaveChanges
Retornar ao topo
Colunas
DescriçãoCódigo VBASalvar comoDocumentos (“Exemplo.doc”). Salvar como (“C: \ Exemplo \ Exemplo.doc”)Salve Documentos (“Exemplo.doc”). SalvarProtegerDocumentos (“Exemplo.doc”). Senha de proteção: = ”senha”DesprotegerDocumentos (“Exemplo.doc”). Desproteger senha: = ”senha”Número de páginasDim varNumberPages as VariantvarNumberPages = _
ActiveDocument.Content.Information (wdActiveEndAdjustedPageNumber)ImprimirDocumentos (“Exemplo.doc”). Imprimir
Retornar ao topo
Cansado de procurar exemplos de código VBA? Experimente o AutoMacro!Fonte
DescriçãoCódigo VBATamanhoSelection.Font.Size = 12AudaciosoSelection.Font.Bold = TrueItálicoSelection.Font.Italic = TrueSublinhadoSelection.Font.Underline = wdUnderlineSingleTudo em maiúsculasSelection.Font.AllCaps = TrueCorSelection.Font.TextColor = vbRedNomeSelection.Font.Name = “Abadi”SubscritoSelection.Font.Subscript = TrueSobrescritoSelection.Font.Superscript = TrueCor de destaqueSelection.Range.HighlightColorIndex = wdYellowEstiloSelection.Style = ActiveDocument.Styles (“Normal”)Retornar ao topo
Inserir
DescriçãoCódigo VBAInserir AutoTextoSelection.TypeText Text: = ”a3 ″Selection.Range.InsertAutoTextInserir Código de DataInserir arquivoSelection.InsertFile (“C: \ Docs \ Something.doc”)Inserir quebra de páginaSelection.InsertBreak Type: = wdPageBreakInserir símbolo de parágrafoTexto Selection.TypeText: = Chr $ (182)Inserir guiaTexto Selection.TypeText: = vbTabInserir TextoSelection.TypeText Text: = ”Qualquer Texto”Inserir Tipo de ParágrafoSelection.TypeParagraphInserir ParágrafoSelection.InsertParagraph
Retornar ao topo
rotações
DescriçãoCódigo VBAFazer até o final do documentoDo Até ActiveDocument.Bookmarks (“\ Sel”) = ActiveDocument.Bookmarks (“\ EndOfDoc”)'Faça alguma coisa
SubPara cada documento no DocumentosDim doc As Document
Documento ForEach em documentos
'Faça alguma coisa
Próximo docLoop Through ParágrafosSub até parágrafos
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Para iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Proximo eu
Retornar ao topo
Parágrafo
DescriçãoCódigo VBAKeepLinesTogetherSelection.ParagraphFormat.KeepTogether = TrueKeepWithNextSelection.ParagraphFormat.KeepWithNext = TrueEspaço DepoisSelection.ParagraphFormat.SpaceAfter = 12Espaço AntesSelection.ParagraphFormat.SpaceBefore = 0Alinhar CentroSelection.ParagraphFormat.Alignment = wdAlignParagraphCenterAlinhar à DireitaSelection.ParagraphFormat.Alignment = wdAlignParagraphRightAlinhar à esquerdaSelection.ParagraphFormat.Alignment = wdAlignParagraphLeftRecuo à esquerdaSelection.ParagraphFormat.LeftIndent = InchesToPoints (3,75)Recuo à direitaSelection.ParagraphFormat.RightIndent = InchesToPoints (1)Espaçamento entre linhasCom Selection.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
.LineSpacing = 12
Terminar comLoop por todos os parágrafosSub até parágrafos
Dim i As Long, iParCount As Long
iParCount = ActiveDocument.Paragraphs.CountFori = 1 Para iParCount
ActiveDocument.Paragraphs (i) .Alignment = wdAlignParagraphLeft
Proximo eu
Retornar ao topo
Tutorial de macro do Word VBA
Este é um tutorial para usar o VBA com o Microsoft Word. Este tutorial irá ensiná-lo a escrever uma macro simples e interagir com documentos, intervalos, seleções e parágrafos.
Observação: se você é novo em Macros / VBA, também pode achar este artigo útil: Como escrever macros VBA a partir do zero.
VBA é a linguagem de programação usada para automatizar programas do Microsoft Office, incluindo Word, Excel, Outlook, PowerPoint e Access.
Macros são blocos de código VBA que executam tarefas específicas.
Quando você Grave uma macro, O Word escreverá o código VBA em uma macro, permitindo que você repita suas ações. Você pode ver uma lista de todas as macros disponíveis em Exibir> Macros.
Depois de gravar uma macro, você será capaz de editar a macro da lista de macros:
Quando você clica Editar, você abre o Editor VBA. Usando o Editor VBA, você pode editar macros gravadas ou escrever uma macro do Word do zero. Para acessar o Editor VBA use o atalho ALT + F11 ou clique Visual básico de Faixa de opções do desenvolvedor.
Exemplo de macro de palavra simples
Este é um exemplo simples de uma macro VBA do Word. Ele executa as seguintes tarefas:
- Abre um documento do Word
- Escreve para Documento
- Fecha e salva o documento do Word.
123456789101112131415 | Sub WordMacroExample ()'Open Doc & Assign to VariableDim oDoc como documentoDefina oDoc = Documents.Open ("c: \ Usuários \ alguém \ NewDocument.docx")'Escreva para o DocSelection.TypeText "www.automateexcel.com"Selection.TypeParagraph'Salvar e Fechar DocoDoc.SaveoDoc.CloseEnd Sub |
Noções básicas de macro do Word
Todo código VBA deve ser armazenado em procedimentos como este. Para criar um procedimento em VBA digite “Sub WordMacroExample” (onde “WordMacroExample” é o nome da macro desejada) e pressione DIGITAR. O VBA adicionará automaticamente o parêntese e o End Sub.
Objeto de documento do Word
Ao interagir com o Microsoft Word em VBA, você frequentemente fará referência a “Objetos” do Word. Os objetos mais comuns são:
Objeto de Aplicação - o próprio Microsoft Word
Objeto de Documento - Um documento do Word
Objeto de alcance - Uma parte de um documento do Word
Objeto de Seleção - Um intervalo selecionado ou localização do cursor.
Aplicativo
O aplicativo é o objeto de “nível superior”. Todos os outros objetos no Word podem ser alcançados por meio dele.
Além de acessar outros objetos do Word, existem configurações de "nível de aplicativo" que podem ser aplicadas:
1 | Application.Options.AllowDragAndDrop = True |
Este é um exemplo de acesso à “Seleção” de “Windows (1)” com no Aplicativo:
1 | Application.Windows (1) .Selection.Characters.Count |
No entanto, os objetos do Word mais comuns podem ser acessados diretamente, sem digitar toda a hierarquia. Então, em vez disso, você pode (e deve) apenas digitar:
1 | Selection.Characters.Count |
Documentos
ActiveDocument
Freqüentemente, você terá dois ou mais documentos abertos no Word e precisará especificar com qual documento específico do Word interagir. Uma maneira de especificar qual documento é usar ActiveDocument. Por exemplo:
1 | ActiveDocument.PrintOut |
… Imprimiria o ActiveDocument. O ActiveDocument é o documento em Word que “tem foco”
Para mudar o ActiveDocument, use o comando Activate:
1 | Documentos ("Exemplo.docx"). Ative |
Esse documento
Em vez de usar ActiveDocument para fazer referência ao documento ativo, você pode usar ThisDocument para fazer referência ao documento onde a macro está armazenada. Este documento nunca mudará.
1 | ThisDocument.PrintOut |
Variáveis do Documento
No entanto, para macros mais complicadas, pode ser difícil controlar o documento ativo. Também pode ser frustrante alternar entre os documentos.
Em vez disso, você pode usar variáveis de documento.
Esta macro atribuirá o ActiveDocument a uma variável e, em seguida, imprimirá o documento usando a variável:
12345 | Sub VarExample ()Dim oDoc como documentoDefinir oDoc = ActiveDocumentoDoc.PrintOutEnd Sub |
Métodos de Documento
Documento Aberto
Para abrir um documento do Word:
1 | Documents.Open "c: \ Users \ SomeOne \ Desktop \ Test PM.docx" |
Recomendamos sempre atribuir um Documento a uma variável ao abri-lo:
12 | Dim oDoc como DocumentoDefina oDoc = Documents.Open ("c: \ Users \ SomeOne \ Desktop \ Test PM.docx") |
Criar Novo Documento
Para criar um novo documento do Word:
1 | Documentos.Adicionar |
Podemos instruir o Word a criar um novo documento com base em algum modelo:
1 | Documents.Add Template: = "C: \ Arquivos de programas \ Microsoft Office \ Templates \ MyTemplate.dotx" |
Como sempre, é útil e economizador de grandes problemas atribuir um documento a uma variável ao criar ou abrir:
12 | Dim oDoc como DocumentoDefina oDoc = Documents.Add (Template: = "C: \ Arquivos de programas \ Microsoft Office \ Templates \ MyTemplate.dotx") |
Salvar Documento
Para salvar um documento:
1 | ActiveDocument.Save |
ou SaveAs:
1 | ActiveDocument.SaveAs FileName: = c: \ Users \ SomeOne \ Desktop \ test2.docx ", FileFormat: = wdFormatDocument |
Fechar Documento
Para fechar um documento e salvar as alterações:
1 | ActiveDocument.Close wdSaveChanges |
ou sem salvar as alterações:
1 | ActiveDocument.Close wdDoNotSaveChanges |
Imprimir Documento
Isso imprimirá o documento ativo:
1 | ActiveDocument.PrintOut |
Intervalo, seleção, parágrafos
Faixa e Seleção são provavelmente os objetos mais importantes no Word VBA, certamente os mais usados.
Faixa refere-se a alguma parte do documento, geralmente, mas não necessariamente, texto.
Seleção refere-se ao texto selecionado (ou outro objeto como imagens) ou, se nada for selecionado, um ponto de inserção.
Parágrafos representar parágrafos no documento. É menos importante do que parece, porque você não pode acessar diretamente o texto do parágrafo (você precisa acessar um determinado intervalo de parágrafo para fazer modificações).
Faixa
O intervalo pode ser qualquer parte do documento, incluindo o documento inteiro:
12 | Dim oRange As RangeDefina oRange = ActiveDocument.Content |
ou pode ser pequeno como um caractere.
Outro exemplo, este intervalo se refere à primeira palavra no documento:
12 | Dim oRange As RangeDefina oRange = ActiveDocument.Range.Words (1) |
Normalmente, você deseja obter o intervalo que se refere a uma parte específica do documento e, em seguida, modificá-lo.
No exemplo a seguir, colocaremos a primeira palavra do segundo parágrafo em negrito:
123 | Dim oRange As RangeDefina oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Bold = True |
Definir intervalo de texto
Para definir o valor do texto de um intervalo:
123 | Dim oRange As RangeDefina oRange = ActiveDocument.Paragraphs (2) .Range.Words (1)oRange.Text = “Olá” |
(Dica: observe o espaço após "Hello". Como o objeto de palavra inclui espaço após a palavra, apenas com "hello" obteríamos "Hellonext word")
Existem centenas de coisas que você pode fazer com intervalos. Apenas alguns exemplos (estes assumem que você já se tornou um objeto variável laranja referindo-se à faixa de interesse):
Mudar fonte
1 | oRange.Font.Name = "Arial" |
Exibir na caixa de mensagem o número de caracteres em um intervalo específico
1 | MsgBox oRange.Characters.Count |
Insira algum texto antes dele
1 | oRange.InsertBefore "este é um texto inserido" |
Adicione uma nota de rodapé ao intervalo
12 | ActiveDocument.Footnotes.Add Range: = oRange, _Texto: = "Leia mais em easyexcel.net." |
Copie para a área de transferência
1234 | oRange.CopyFreqüentemente, você precisa mudar para o que é uma referência de intervalo particular. Então você pode começar, é começo e fimoRange.Start = 5oRange.End = 50 |
Após o código acima, oRange se referirá ao texto começando com o quinto e terminando com o 50º caractere no documento.
Seleção
Seleção é ainda mais amplamente usado do que Faixa, porque é mais fácil trabalhar com Seleções que Gamas, SE a sua macro interagir SOMENTE com o ActiveDocument.
Primeiro selecione a parte desejada do seu documento. Por exemplo, selecione o segundo parágrafo no documento ativo:
1 | ActiveDocument.Paragraphs (2) .Range.Select |
Em seguida, você pode usar o objeto de seleção para digitar algum texto:
1 | Selection.TypeText "Algum texto" |
Podemos digitar alguns parágrafos abaixo de “Algum texto”:
12 | Selection.TypeText "Algum texto"Selection.TypeParagraph |
Muitas vezes, é necessário saber se algum texto foi selecionado ou se temos apenas um ponto de inserção:
12345 | If Selection.Type wdSelectionIP ThenSelection.Font.Bold = TrueOutroMsgBox "Você precisa selecionar algum texto."Fim se |
Ao trabalhar com o objeto Seleção, queremos colocar o ponto de inserção em um lugar específico e emitir comandos a partir deste ponto.
Início do documento:
1 | Selection.HomeKey Unit: = wdStory, Extend: = wdMove |
Início da linha atual:
1 | Selection.HomeKey Unit: = wdLine, Extend: = wdMove |
O parâmetro Extend wdMove move o ponto de inserção. Em vez disso, você pode usar wdExtend, que selecionará todo o texto entre o ponto de inserção atual.
1 | Selection.HomeKey Unit: = wdLine, Extend: = wdExtend |
Mover Seleção
O método mais útil para alterar a posição do ponto de inserção é Mover. Para mover a seleção dois caracteres para a frente:
1 | Selection.Move Unit: = wdCharacter, Count: = 2 |
para movê-lo para trás, use um número negativo para o parâmetro Count:
1 | Selection.Move Unit: = wdCharacter, Count: = - 2 |
O parâmetro da unidade pode ser wdCharacter, wdWord, wdLine ou mais (use a ajuda do Word VBA para ver outros).
Para mover palavras em vez disso:
1 | Seleção.Mover unidade: = wdWord, Contagem: = 2 |
A seleção é mais fácil de trabalhar (em comparação com os intervalos) porque é como um robô usando o Word, imitando o usuário humano. Onde está o ponto de inserção - alguma ação ocorreria. Mas, isso significa que você deve tomar cuidado onde está o ponto de inserção! Isso não é fácil depois de muitas etapas no código. Caso contrário, o Word mudaria o texto no local não desejado.
No caso de você precisar de alguma propriedade ou método não disponível no objeto Seleção, você sempre pode obter facilmente o intervalo associado à seleção:
1 | Defina oRange = Selection.Range |
DICA: Usando Seleção muitas vezes é mais fácil do que usar intervalos, mas também é muito mais lento (importante quando você lida com documentos grandes)
Parágrafos
Você não pode usar diretamente o objeto Parágrafos para alterar o texto:
1 | ActiveDocument.Paragraphs (1) .Text = "Não, não funcionaria" |
Acima não funcionaria (na verdade, geraria um erro). Você precisa primeiro obter o intervalo associado a um parágrafo específico:
1 | ActiveDocument.Paragraphs (1) .Range.Text = "Funciona agora :)" |
Mas você pode alterar diretamente seu estilo:
1 | ActiveDocument.Paragraphs (1) .Style = "Normal" |
ou altere a formatação de nível de parágrafo:
1 | ActiveDocument.Paragraphs (1) .LeftIndent = 10 |
ou talvez você queira manter este parágrafo na mesma linha do próximo parágrafo:
1 | ActiveDocument.Paragraphs (1) .KeepWithNext = True |
Centralize o parágrafo:
1 | ActiveDocument.Paragraphs (1) .Alignment = wdAlignParagraphCenter |
É MUITO útil atribuir um determinado parágrafo à variável de objeto. Se atribuirmos um parágrafo específico à variável, não precisamos nos preocupar se o primeiro parágrafo se tornar o segundo porque inserimos um parágrafo antes dele:
12 | dim oPara como parágrafoDefinir oPara = Selection.Paragraphs (1) ‘aqui atribuímos o primeiro parágrafo da seleção atual à variável |
Aqui está um exemplo em que inserimos um parágrafo acima do primeiro parágrafo, mas ainda podemos fazer referência ao antigo primeiro parágrafo porque ele foi atribuído a uma variável:
1234567 | Sub ParagraphExample ()Dim oPara como parágrafoDefina oPara = ActiveDocument.Paragraphs (1)MsgBox oPara.Range.TextoPara.Range.InsertParagraphBefore 'Inserir parágrafoMsgBox oPara.Range.TextEnd Sub |
O objeto de parágrafo é muito frequentemente usado em loops:
123456789101112 | Sub LoopThroughParagraphs ()Dim oPara como parágrafoPara Cada oPara Em ActiveDocument.Paragraphs'fazer algo com ele. Vamos apenas mostrar'texto do parágrafo se o estilo for "Título 4"Se oPara.Style = "Título 4", entãoMsgBox oPara.Range.TextFim sePróxima oParaEnd Sub |
Conclusão do tutorial do Word VBA
Este tutorial cobriu os fundamentos do Word VBA. Se você é novo no VBA, também deve revisar nosso Tutorial geral do VBA para aprender mais sobre Variáveis, Loops, MessageBoxes, Configurações, Lógica Condicional e muito mais.
Exemplos de macro de palavras
Exemplos de macro de palavras |
---|
Modelos |
Adicionar Novos Documentos |
Contar palavras na seleção |
TextBoxes |
Salvar como PDF |
Favoritos |
Mesas |
Encontre, encontre e substitua |
Documentos Abertos |
FAQs do Word VBA
O que é uma macro do Word?
Uma macro é um termo geral que se refere a um conjunto de instruções de programação que automatizam tarefas. As macros do Word automatizam tarefas no Word usando a linguagem de programação VBA.
O Word tem VBA?
Sim, o Microsoft Word possui o Editor VBA. Ele pode ser acessado pressionando ALT + F11 ou navegando até Desenvolvedor> Visual Basic.
Como faço para usar o VBA no Word?
1. Abra o Editor VBA (ALT + F11 ou Desenvolvedor> Visual Basic)
2. Vá para Inserir> Módulo para criar um Módulo de Código
3. Digite ‘Sub HelloWorld’ e pressione Enter
4. Entre as linhas ‘Sub HelloWorld’ e ‘End Sub’, digite ‘MsgBox“ Hello World! ’
5. Você criou uma macro!
6. Agora pressione 'F5' para executar a macro