Exemplos de macro de palavras e tutorial VBA

Bem-vindo ao nosso Mega-Guia Word VBA / Macros!

Esta página contém:

    1. PDF do tutorial do Word VBA (download grátis)
    2. “Cheat Sheet” do Word VBA contendo uma lista dos trechos de código do Word VBA mais comumente usados
    3. Tutorial de VBA / Macro em Word completo.
    4. 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: = wdStory
Selection.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 Document
Set 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 Variant
varNumberPages = _
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

wave wave wave wave wave