Como começar a usar macros no Word

Cansado de realizar tarefas repetitivas no Microsoft Word? Escondido dentro do programa está uma ferramenta de automação poderosa que pode tirar esses trabalhos de suas mãos. Estamos falando de macros e, embora o recurso dependa do Visual Basic for Applications (VBA) da Microsoft, você pode usá-lo mesmo que a ideia de codificação lhe dê calafrios.

Com um clique em um botão, o Word gravará suas ações, gerando uma macro que você pode reproduzir quantas vezes quiser. Se você for aventureiro, pode facilmente modificar a macro para um grau extra de automação.

Aqui, mostraremos um exemplo simples, mas útil: Como automatizar a função Localizar e Substituir do Word.

Gravando a Macro

Neste exemplo, você é o estimado presidente da Society for the Preservation of Antique Dental Appliances. Você tem dezenas de documentos do Word sobre dentaduras históricas e similares, todos com o nome da sociedade mencionado em destaque. Então, de repente, o conselho vota para mudar o nome para Dental Antiques Preservation League. Agora você precisa de uma maneira fácil de atualizar os documentos.

Você pode começar com um novo documento em branco ou abrir um existente. Se ainda não tiver feito isso, você terá que habilitar a guia Desenvolvedor.

Vá para Arquivo> Opções> Personalizar Faixa de Opções . À direita, em Guias principais , marque a opção Desenvolvedor . Selecione OK e saia.

Agora vamos criar nossa macro.

  1. Clique em Desenvolvedor> Gravar Macro .
  2. Você será solicitado a nomear a macro. Digite “ChangeSocietyName” ou qualquer outro nome que seja adequado a você. Ao nomear macros, evite espaços, pontos, pontos de exclamação e caracteres especiais, ou você receberá uma mensagem de erro. Você pode usar números, mas o primeiro caractere deve ser uma letra.
    Definir propriedades para macros do Word
  3. Você pode atribuir a macro a um botão e / ou atalho de teclado, mas isso não é um requisito. Se você escolher o botão, o Word permitirá que você o adicione à barra de ferramentas de acesso rápido. Você também pode adicionar uma breve descrição da macro.
  4. Clique em OK e o Word agora gravará suas ações. Pressione Ctrl + H para abrir a caixa de diálogo Localizar e Substituir .
  5. Entre na “Sociedade para a Preservação de Aparelhos Dentários Antigos” em Encontrar e “Liga de Preservação de Antiguidades Dentárias” em Substituir.
    Gravar macro para localizar e substituir
  6. Clique em Substituir tudo para executar a operação Localizar e substituir. Esta é a única ação que você deseja registrar. Não importa se a macro realmente substitui algum texto. O objetivo é salvá-lo para outros documentos.
  7. Isso é importante: Clique em Desenvolvedor> Parar gravação . Caso contrário, a macro incluirá todas as ações subsequentes.

Agora vamos ver o seu trabalho. Abra um documento contendo o nome da sociedade. Clique em Desenvolvedor> Macros . Se você clicar duas vezes em ChangeSocietyName, o Word executará automaticamente a operação Localizar e substituir.

Dica: Ao gravar a macro, pode ser necessário executar uma ação que não deseja que seja gravada. Por exemplo, você pode desejar copiar e colar texto na caixa de diálogo Localizar e substituir em vez de digitá-lo manualmente. Não há problema: basta clicar em Desenvolvedor> Pausar gravação , copiar e colar o texto e clicar em Desenvolvedor> Retomar gravador . Em seguida, você pode concluir a gravação da macro conforme descrito acima.

Embora tenhamos nos concentrado aqui no Microsoft Word, você também pode usar macros para aumentar a produtividade no Excel . E há muitas macros que economizam tempo para o Microsoft OneNote .

Mergulhando no Código

Agora vamos dar um mergulho mais profundo em nossa nova macro do Word. Vá para Desenvolvedor> Macros , mas em vez de clicar duas vezes na macro, selecione-a e clique em Editar . Isso abre o editor do Visual Basic, um ambiente independente para a construção de aplicativos VBA.

Pode parecer assustador, mas você pode ignorar os menus e a maioria dos painéis. Em vez disso, concentre-se na janela que contém o código. Como você pode ver, o Word acabou de escrever uma macro que executa Localizar e Substituir.

 
Sub ChangeSocietyName()
'
' ChangeSocietyName Macro
' Rename Society for the Preservation of Antique Dental Appliances
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Society for the Preservation of Antique Dental Appliances"
.Replacement.Text = "Dental Antiques Preservation League"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Vamos explicar o que está acontecendo aqui.

O “sub” na primeira linha é a abreviação de “sub-rotina”, um pequeno programa que pode ser executado por conta própria ou como parte de um aplicativo VBA maior. As linhas precedidas por aspas simples são para comentários. As aspas indicam ao VBA para ignorar quaisquer declarações nessas linhas.

Em seguida, chegamos ao cerne do código: o código que executa a operação Localizar e Substituir . Como você pode ver, ele especifica valores para cada opção na caixa de diálogo Localizar e Substituir, incluindo o texto e o texto de substituição entre aspas. O comando Selection.Find.Execute próximo ao final é equivalente a clicar no botão “Substituir tudo”.

Modificando a macro

Para usar macros, você não precisa mexer no código nem mesmo olhar para ele. Mas você pode obter mais desta função se estiver disposto a mergulhar. Por exemplo, suponha que você cometa um erro de digitação ao gravar a macro. Em vez de regravá-lo, você pode acessar o Visual Basic e corrigi-lo.

Você também pode ajustar a macro para torná-la mais útil, e é isso que faremos aqui. Quando você executa Localizar e substituir, seja manualmente ou por meio de macro, o Word se lembra do texto localizar e substituir. Na próxima vez que você abrir a caixa de diálogo Localizar e substituir, ela terá a seguinte aparência.

Seria melhor limpar os valores para obter uma caixa de diálogo limpa. Faremos isso com uma segunda macro, mas desta vez faremos diretamente no Visual Basic.

  1. No editor do Visual Basic, selecione a sub-rotina inteira, da primeira linha até End Sub. Pressione Ctrl + C para copiá-lo.
  2. Coloque o cursor abaixo de End Sub e pressione Ctrl + V. Você acabou de duplicar a sub-rotina.
  3. Altere o nome de ChangeSocietyName para ClearFindReplace (ou qualquer outro nome que seja adequado a você). Isso é importante porque o VBA gerará uma mensagem de erro se você tentar executar macros com nomes duplicados.
  4. Nos valores .Text e Replacement.Text , remova o texto, mas deixe as aspas. Essencialmente, você está dizendo ao Word para não encontrar nada e substituí-lo por nada, mas também está limpando esses valores.

O resultado deve ser assim:

 
Sub ClearFindReplace()
'
' ClearFindReplace Macro
' Clear Text from Find and Replace dialog
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Agora vamos voltar para a macro ChangeSocietyName. Abaixo do código Find and Replace, mas antes de End Sub, insira ClearFindReplace (sem parênteses no final).

Isso mesmo: você não precisa inserir todo o código que acabou de criar, apenas o nome da macro.

 
Sub ChangeSocietyName()
'
' ChangeSocietyName Macro
' Rename Society for the Preservation of Antique Dental Appliances
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Society for the Preservation of Antique Dental Appliances"
.Replacement.Text = "Dental Antiques Preservation League"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ClearFindReplace
End Sub

Quando o Word executa ChangeSocietyName, primeiro ele executa a função original Localizar e Substituir. Em seguida, ele interpretará ClearFindReplace como um comando para executar a segunda macro.

Indo além com VBA

Como você pode ver, a função de gravação de macro do Word pode ajudá-lo a economizar tempo de inúmeras maneiras. Você pode criar macros para automatizar quase qualquer operação e, no editor do Visual Basic, pode ajustar as macros, incorporar uma macro dentro da outra ou criar uma sub-rotina que executa várias macros uma após a outra.

Como o VBA é uma linguagem de programação completa, você pode incorporar as sub-rotinas em aplicativos maiores com variáveis, loops, instruções condicionais e muito mais. E depois de aprender os fundamentos do VBA no Word, você pode aplicar muito desse mesmo conhecimento para criar macros no Microsoft Excel e Access.

Para ir mais longe, você vai querer aprender mais sobre as convenções do VBA e o editor do Visual Basic, por exemplo, como organizar seu código e como lidar com bugs. Mas mesmo se você quiser se limitar a funções simples como as descritas aqui, você pode percorrer um longo caminho para melhorar sua produtividade.