Como gravar uma macro no Excel - um guia passo a passo

Mesmo se você for um novato completo no mundo do Excel VBA, você pode facilmente gravar uma macro e automatizar parte do seu trabalho.

Neste guia detalhado, cobrirei tudo o que você precisa saber para começar a gravar e usar macros no Excel.

Se você estiver interessado em aprender VBA da maneira mais fácil, confira meu Treinamento Online Excel VBA.

O que é uma macro?

Se você é um novato em VBA, deixe-me primeiro dizer o que é uma macro - afinal, vou continuar usando esse termo em todo o tutorial.

Uma macro é um código escrito em VBA (Visual Basic for Applications) que permite que você execute um pedaço de código sempre que for executado.

Freqüentemente, você encontrará pessoas (incluindo eu) que se referem a um código VBA como uma macro - seja ele gerado usando um gravador de macro ou escrito manualmente.

Quando você grava uma macro, o Excel observa de perto as etapas que você está realizando e as anota em um idioma que ele entende - que é o VBA.

E como o Excel é um ótimo anotador, ele cria um código muito detalhado (como veremos mais adiante neste tutorial).

Agora, quando você interrompe a gravação, salva a macro e a executa, o Excel simplesmente volta ao código VBA gerado e segue exatamente as mesmas etapas.

Isso significa que, mesmo que você não saiba nada sobre o VBA, pode automatizar algumas tarefas deixando o Excel registrar suas etapas uma vez e reutilizá-las posteriormente.

Agora vamos mergulhar e ver como gravar uma macro no Excel.

Obtendo a guia Desenvolvedor na faixa de opções

A primeira etapa para gravar uma macro é obter a guia Desenvolvedor na faixa de opções.

Se você já consegue ver a guia do desenvolvedor na faixa de opções, vá para a próxima seção, caso contrário, siga as etapas abaixo:

  • Clique com o botão direito em qualquer uma das guias existentes na faixa de opções e clique na opção ‘Personalizar a Faixa de Opções’. Isso abrirá a caixa de diálogo Opções do Excel.
  • Na caixa de diálogo Opções do Excel, você terá as opções Personalizar a faixa de opções. À direita, no painel Guias principais, marque a opção Desenvolvedor.
  • Clique OK.

As etapas acima tornariam a guia Desenvolvedor disponível na área da faixa de opções.

Gravando uma Macro no Excel

Agora que tudo está pronto, vamos aprender como gravar uma macro no Excel.

Vamos gravar uma macro muito simples - aquela que seleciona uma célula e insere o texto ‘Excel’ nela. Estou usando o texto ‘Excel’ ao gravar esta macro, mas sinta-se à vontade para inserir seu nome ou qualquer outro texto de sua preferência.

Aqui estão as etapas para gravar essa macro:

  1. Clique na guia Desenvolvedor.
  2. No grupo Código, clique no botão Macro. Isso abrirá a caixa de diálogo ‘Gravar Macro’.
  3. Na caixa de diálogo Gravar Macro, insira um nome para sua macro. Estou usando o nome EnterText. Existem algumas condições de nomenclatura que você precisa seguir ao nomear uma macro. Por exemplo, você não pode usar espaços entre eles. Eu geralmente prefiro manter meus nomes de macro como uma única palavra, com partes diferentes com o primeiro alfabeto em maiúscula. Você também pode usar o sublinhado para separar duas palavras - como Enter_Text.
  4. (Etapa opcional) Você pode atribuir um atalho de teclado, se desejar. Nesse caso, usaremos o atalho Control + Shift + N. Lembre-se de que o atalho que você atribuiu aqui substituirá todos os atalhos existentes em sua pasta de trabalho. Por exemplo, se você atribuir o atalho Control + S, não poderá usá-lo para salvar a pasta de trabalho (em vez disso, toda vez que você usá-lo, ele executará a macro).
  5. Na opção ‘Armazenar macro em’, certifique-se de que ‘Esta pasta de trabalho’ esteja selecionada. Esta etapa garante que a macro faça parte da pasta de trabalho. Ele estará lá quando você salvá-lo e reabri-lo, ou mesmo se você o compartilhar com alguém.
  6. (Etapa opcional) Insira uma descrição. Eu normalmente não faço isso, mas se você é extremamente organizado, você pode querer adicionar do que se trata a macro.
  7. Clique OK. Assim que você clicar em OK, ele começará a registrar suas ações no Excel. Você pode ver o botão ‘Parar a gravação’ na guia Desenvolvedor, que indica que a gravação da macro está em andamento.
  8. Selecione a célula A2.
  9. Insira o texto Excel (ou você pode usar seu nome).
  10. Pressione a tecla Enter. Isso selecionará a célula A3.
  11. Clique no botão Parar gravação na guia Desenvolvedor.

Parabéns!

Você acabou de gravar sua primeira macro no Excel. Você não é mais uma macro virgem.

Embora a macro não faça nada de útil, ela servirá ao seu propósito ao explicar como um gravador de macro funciona no Excel.

Agora vamos testar essa macro.

Siga as etapas abaixo para testar a macro:

  1. Exclua o texto na célula A2. Isso serve para testar se a macro insere o texto na célula A2 ou não.
  2. Selecione qualquer célula - diferente de A2. Isso serve para testar se a macro seleciona a célula A2 ou não.
  3. Clique na guia Desenvolvedor.
  4. No grupo Código, clique no botão Macros.
  5. Na caixa de diálogo Macro, clique no Nome da macro - EnterText.
  6. Clique no botão Executar.

Você notará que assim que clicar no botão Executar, o texto ‘Excel’ será inserido na célula A2 e a célula A3 será selecionada.

Agora, tudo isso pode acontecer em uma fração de segundo, mas na realidade, a macro - assim como um elfo obediente - seguiu os passos exatos que você mostrou enquanto gravava a macro.

Portanto, a macro primeiro seleciona a célula A2 e, em seguida, insere o texto Excel nele e, em seguida, seleciona a célula A3.

Nota: Você também pode executar a macro usando o atalho do teclado Control + Shift + N (segure as teclas Control e Shift e, em seguida, pressione a tecla N). Este é o mesmo atalho de teclado que atribuímos à macro ao gravá-la.

O que a gravação de uma macro faz no back-end

Agora vamos para o back-end do Excel - o VB Editor - e ver o que a gravação de uma macro realmente faz.

Aqui estão as etapas para abrir o Editor VB no Excel:

  1. Clique na guia Desenvolvedor.
  2. No grupo Código, clique no botão Visual Basic.

Ou você pode usar o atalho do teclado - ALT + F11 (segure a tecla ALT e pressione F11), em vez das duas etapas acima. Este atalho também abre o mesmo Editor VB.

Agora, se você estiver vendo o Editor VB pela primeira vez, não se assuste.

Deixe-me familiarizá-lo rapidamente com a anatomia do VB Editor.

  • Barra de menu: É aqui que você tem todas as opções do VB Editor. Considere isso como a faixa de opções do VBA. Ele contém comandos que você pode usar ao trabalhar com o Editor VB.
  • Barra de ferramentas - É como a Barra de Ferramentas de Acesso Rápido do editor VB. Ele vem com algumas opções úteis e você pode adicionar mais opções a ele. Seu benefício é que uma opção na barra de ferramentas está a apenas um clique de distância.
  • Janela do Explorador de Projetos - Aqui é onde o Excel lista todas as pastas de trabalho e todos os objetos em cada pasta de trabalho. Por exemplo, se tivermos uma pasta de trabalho com 3 planilhas, ela aparecerá no Project Explorer. Existem alguns objetos adicionais aqui, como módulos, formulários de usuário e módulos de classe.
  • Janela de Código - Aqui é onde o código VBA é gravado ou escrito. Há uma janela de código para cada objeto listado no Explorador de projetos - como planilhas, pastas de trabalho, módulos, etc. Veremos posteriormente neste tutorial que a macro gravada vai para a janela de código de um módulo.
  • Janela de Propriedades - Você pode ver as propriedades de cada objeto nesta janela. Costumo usar essa janela para nomear objetos ou alterar as propriedades ocultas. Você pode não ver esta janela ao abrir o editor VB. Para mostrar isso, clique na guia Visualização e selecione Janela de Propriedades.
  • Janela Imediata - Costumo usar a janela imediata enquanto escrevo o código. É útil quando você deseja testar algumas instruções ou durante a depuração. Ele pode não estar visível por padrão e você pode fazê-lo aparecer clicando na guia Exibir e selecionando a opção Janela Imediata.

Quando gravamos a macro - EnterText, as seguintes coisas aconteceram no Editor VB:

  • Um novo módulo foi inserido.
  • Uma macro foi gravada com o nome que especificamos - EnterText
  • O código foi escrito na janela de código do módulo.

Portanto, se você clicar duas vezes no módulo (Módulo 1, neste caso), uma janela de código conforme mostrado abaixo aparecerá.

Aqui está o código que o gravador de macro nos deu:

Sub EnterText () '' EnterText Macro '' Atalho de teclado: Ctrl + Shift + N 'Intervalo ("A2"). Selecione ActiveCell.FormulaR1C1 = Intervalo "Excel" ("A3"). Selecione End Sub

No VBA, qualquer linha que segue o (sinal de apóstrofo) não é executado. É um comentário colocado apenas para fins informativos. Se você remover as primeiras cinco linhas deste código, a macro ainda funcionará conforme o esperado.

Agora, deixe-me cobrir rapidamente o que cada linha de código faz:

O código começa com Sub seguido pelo nome da macro e parênteses vazios. Sub é a abreviação de Subroutine. Cada sub-rotina (também chamada de Procedimento) no VBA começa com Sub e termina com End Sub.

  • Intervalo (“A2”). Selecione - Esta linha seleciona a célula A2.
  • ActiveCell.FormulaR1C1 = “Excel” - esta linha insere o texto Excel na célula ativa. Como selecionamos A2 como a primeira etapa, ele se torna nossa célula ativa.
  • Intervalo (“A3”). Selecione - Isso seleciona a célula A3. Isso acontece quando pressionamos a tecla Enter após inserir o texto, cujo resultado foi selecionar a célula A3.

Espero que agora você tenha algum conhecimento básico de como gravar uma macro no Excel.

Lembre-se de que o código escrito por um gravador de macro não é, de forma alguma, um código eficiente.

O gravador de macro às vezes adiciona muitos detalhes ao código, o que às vezes não é necessário. Mas isso não significa que não seja útil. Para quem está aprendendo VBA, um gravador de macro pode ser uma ótima maneira de analisar como as coisas funcionam no VBA.

Gravação macro absoluta vs. relativa

Você já conhece referências absolutas e relativas no Excel … certo?

Se você não fizer isso - leia este tutorial sobre referências primeiro.

Leia-o? Vamos continuar.

Veremos mais adiante nesta seção como registrar macros em referências absolutas e relativas. Mas antes disso, deixe-me resumir rapidamente a diferença entre referência absoluta e relativa no VBA (caso você tenha ficado com preguiça e não tenha lido no link que dei algumas linhas atrás):

Se você usar uma opção de referência absoluta para gravar uma macro, o código VBA sempre fará referência às mesmas células que você usou. Por exemplo, se você selecionar a célula A2, insira o texto Excel e pressione Enter, todas as vezes - não importa onde você esteja na planilha e não importa qual célula esteja selecionada, seu código deve primeiro selecionar a célula A2, inserir o texto Excel e em seguida, vá para a célula A3.

Se você usar uma opção de referência relativa para gravar uma macro, o VBA não codificará as referências de células. Em vez disso, ele se concentraria no movimento em comparação com a célula ativa. Por exemplo, suponha que você já tenha a célula A1 selecionada e comece a gravar a macro no modo de referência relativa.

Agora você seleciona a célula A2, insere o texto Excel e pressiona a tecla Enter. Agora, quando você executa esta macro, ela não irá voltar para a célula A2, em vez disso, ela se moverá em relação à célula ativa. Por exemplo, se a célula K3 for selecionada, ela se moverá para K4, insira o texto Excel e, finalmente, selecione a célula K5.

Agora, deixe-me explicar como gravar uma macro no modo de referências relativas:

  1. Selecione a célula A1.
  2. Clique na guia Desenvolvedor.
  3. No grupo Code, clique no botão ‘Use Relative References’. Ele ficará verde, indicando que está ligado.
  4. Clique no botão Gravar Macro.
  5. Na caixa de diálogo Gravar Macro, insira um nome para sua macro. Estou usando o nome EnterTextRelRef.
  6. Na opção Armazenar macro em, certifique-se de que ‘Esta pasta de trabalho’ esteja selecionada.
  7. Clique OK.
  8. Selecione a célula A2.
  9. Insira o texto Excel (ou você pode inserir seu nome).
  10. Pressione a tecla Enter. Isso levará o cursor para a célula A3.
  11. Clique no botão Parar gravação na guia Desenvolvedor.

Isso gravaria a macro no modo de referência relativa.

Agora faça isso.

  1. Selecione qualquer célula (diferente de A1).
  2. Clique na guia Desenvolvedor.
  3. No grupo Código, clique no botão Macros.
  4. Na caixa de diálogo Macro, clique no Nome da macro - EnterTextRelRef.
  5. Clique no botão Executar.

O que acontece? O cursor voltou para a célula A3.

Não seria - porque você gravou a macro no modo de referência relativa. Portanto, o cursor se moverá em relação à célula ativa. Por exemplo, se você fizer isso quando a célula K3 for selecionada, ela inserirá o texto Excel é célula K4 e acabará selecionando a célula K5.

Aqui está o código que é gravado no back-end (janela de código do módulo VB Editor):

Sub EnterTextRelRef () '' EnterTextRelRef Macro '' ActiveCell.Offset (1, 0) .Range ("A1"). Selecione ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset (1, 0) .Range ("A1"). Selecione End Sub

Observe que todo esse código não se refere às células K3 ou K4 em nenhum lugar. Em vez disso, ele usa o Activecell para se referir à célula selecionada e o deslocamento para se mover em relação à célula ativa.

Não se preocupe com a parte do intervalo (“A1”) que o código tem. É um daqueles códigos desnecessários que o gravador de macro adiciona que não serve para nada e pode ser removido. O código funcionaria bem sem ele.

O botão ‘Usar referência relativa’ na guia Desenvolvedor é um botão de alternância. Você pode desligá-lo (e voltar à referência absoluta) clicando nele.

O que um gravador de macro não pode fazer

O gravador de macro é ótimo para seguir você no Excel e registrar seus passos exatos, mas pode falhar quando você precisar fazer mais.

  • Você não pode executar um código sem selecionar o objeto. Se você quiser que o gravador de macro vá para a próxima planilha e destaque todas as células preenchidas na coluna A, sem sair da planilha atual, então ele não será capaz de fazer isso. É porque se eu pedir a você para fazer isso, nem mesmo você será capaz de fazer (sem sair da planilha atual). E se você não pode fazer isso sozinho, como o gravador de macro capturará suas ações. Nesses casos, você precisa criar / editar o código manualmente.
  • Você não pode criar uma função personalizada com um gravador de macro. Com o VBA, você pode criar funções personalizadas que podem ser usadas na planilha como funções regulares. Você pode criar isso escrevendo o código manualmente.
  • Você não pode executar códigos com base em eventos: No VBA, você pode usar muitos eventos - como abrir uma pasta de trabalho, adicionar uma planilha, clicar duas vezes em uma célula, etc, para executar um código associado a esse evento. Você pode usar um gravador de macro para fazer isso.
  • Você não pode criar loops com um gravador de macro. Ao inserir o código manualmente, você pode aproveitar o poder dos loops no VBA (como Para o próximo, Para cada próximo, Do While, Do until). Mas você não pode fazer isso ao gravar uma macro.
  • Você não pode analisar as condições: Você pode verificar as condições dentro do código usando o gravador de macro. Se você escrever um código VBA manualmente, poderá usar as instruções IF Then Else para analisar uma condição e executar um código se for verdadeiro (ou outro código se for falso).
  • Você não pode passar argumentos em um procedimento de macro: Quando você grava uma macro, ela nunca terá argumentos. Uma sub-rotina pode receber argumentos de entrada que podem ser usados ​​dentro da macro para executar uma tarefa. Ao gravar uma macro, isso não pode ser feito porque as macros gravadas são independentes e não estão conectadas a nenhuma outra macro existente.

Extensões de arquivo habilitadas para macro

Quando você grava uma macro ou escreve manualmente o código VBA no Excel, precisa salvar o arquivo com uma extensão de arquivo habilitada para macro (.xlsm).

Antes do Excel 2007, havia um único formato de arquivo que costumava ser suficiente - .xls.

Mas a partir de 2007, .xlsx foi introduzido como a extensão de arquivo padrão. Os arquivos salvos como .xlsx não podem conter uma macro. Portanto, se você tiver um arquivo com extensão .xlsx e gravar / escrever uma macro e salvá-la, ele irá avisá-lo para salvá-lo no formato habilitado para macro e mostrar uma caixa de diálogo (conforme mostrado abaixo):

Se você selecionar Não, o Excel permite salvá-lo em um formato habilitado para macro. Mas se você clicar em Sim, o Excel removerá automaticamente todo o código de sua pasta de trabalho e o salvará como uma pasta de trabalho .xlsx.

Portanto, se você tiver uma macro em sua pasta de trabalho, precisará salvá-la no formato .xlsm para mantê-la.

Diferentes maneiras de executar uma macro no Excel

Até agora, vimos apenas uma maneira de executar uma macro no Excel - usando a caixa de diálogo Macro.

Mas existem várias maneiras de executar macros.

  1. Executar uma macro a partir da faixa de opções (guia Desenvolvedor)
  2. Usando um atalho de teclado (que você deve atribuir)
  3. Atribuir a macro a uma forma
  4. Atribuir a macro a um botão
  5. Execute uma macro a partir do Editor VB

Conclusão - Grave uma macro quando travada

Já mencionei que um gravador de macro é uma ferramenta útil para quem trabalha com VBA no Excel.

Ao usar o gravador de macro algumas vezes, você perceberá que ele emite uma grande quantidade de código desnecessário. No entanto, ainda é útil e dá algumas ideias sobre por onde começar. Por exemplo, se eu pedir que você filtre uma coluna de células usando VBA e você não tiver ideia de qual é a sintaxe, você pode gravar uma macro rapidamente e verificar o código.

Um gravador de macro é uma ferramenta indispensável e, mesmo depois de anos de experiência em codificação VBA, costumo recorrer ao gravador de macro para obter ajuda.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave