Capítulo 17: Introdução ao VBA e Gravador de Macros
🎯 Objetivo da Aula
Uma Macro é uma sequência automatizada de instruções escritas em VBA (Visual Basic for Applications), a linguagem de programação nativa do ecossistema Microsoft Office. Se você precisa formatar relatórios, validar dados ou consolidar informações repetitivamente todos os dias, o VBA permite transformar minutos (ou horas) de trabalho mecânico em um clique de fração de segundos.
Nesta aula, você aprenderá os pilares da automação no Excel:
- O que é a linguagem VBA e como ela se comunica com o Excel.
- O Modelo de Objetos do Excel (Application, Workbook, Worksheet, Range).
- A diferença crucial entre Objetos, Propriedades e Métodos.
- Como habilitar e utilizar o Gravador de Macros e o ambiente de desenvolvimento VBE (Visual Basic Editor).
- As diretrizes de segurança e a extensão essencial de arquivo
.xlsm.
🏢 O Cenário Prático (Seu Desafio)
Situação: Todos os dias, às 08h00, o sistema ERP da FastLog extrai um relatório bruto de fretes emitidos. O arquivo gerado é “cru”: sem cabeçalhos destacados, sem formatação de moedas, com colunas cortadas e sem bordas. Você gasta 15 a 20 minutos todas as manhãs realizando a mesma sequência manual de formatação e limpeza.
Missão: Construir um script de automação (Macro) que aplique padronização visual completa (cabeçalho corporativo, autoajuste de colunas e formatação numérica) com apenas um clique de botão, economizando horas de trabalho operacional.
🧠 Fundamentos: A Teoria da Linguagem VBA
1. O que é o VBA?
O VBA (Visual Basic for Applications) é uma linguagem de programação orientada a eventos e baseada em objetos, desenvolvida pela Microsoft. Diferente de uma fórmula de célula (que apenas calcula e devolve um valor naquela posição), o VBA possui poder executivo: ele pode criar arquivos, alterar cores, deletar linhas, abrir caixas de diálogo, conectar-se a bancos de dados externos e até enviar e-mails via Outlook.
graph TD
User["Ação do Usuário / Botão"] --> Engine["Interpretador VBA"]
Engine --> App["Application (Excel)"]
App --> WB["Workbooks (Pastas de Trabalho)"]
WB --> WS["Worksheets (Abas da Planilha)"]
WS --> Rng["Range / Cells (Células e Intervalos)"]
style Engine fill:#217346,stroke:#fff,stroke-width:2px,color:#fff
style Rng fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff2. O Modelo de Objetos do Excel (Excel Object Model)
O Excel é organizado em uma estrutura hierárquica rigorosa chamada Modelo de Objetos. Para manipular qualquer elemento na tela via código, precisamos navegar nessa árvore genealógica:
Application: Representa a instância inteira do programa Microsoft Excel em execução.Workbook/Workbooks: Representa o arquivo aberto (a Pasta de Trabalho, ex:Relatorio_Maio.xlsm).Worksheet/Worksheets: Representa as abas ou folhas de cálculo dentro daquele arquivo (ex:Planilha1,Estoque).Range/Cells: Representa a menor unidade de trabalho: uma célula isolada (Range("A1")) ou um bloco (Range("A1:C10")).
ThisWorkbook vs ActiveWorkbookThisWorkbook sempre se refere ao arquivo .xlsm onde o próprio código VBA está salvo — não muda mesmo que o usuário abra outras pastas de trabalho ao mesmo tempo. ActiveWorkbook (ou simplesmente Workbook sem especificar) se refere à pasta de trabalho que estiver na tela em primeiro plano no momento, que pode ser outra. Por segurança, este curso sempre usa ThisWorkbook quando quer garantir que o código atua no próprio arquivo da macro.
3. A Tríade da Programação em VBA: Objetos, Propriedades e Métodos
Para escrever ou ler qualquer linha de código em VBA, você deve dominar três conceitos fundamentais:
| Conceito | O que representa? | Pergunta de Apoio | Exemplo no Mundo Real | Exemplo em VBA |
|---|---|---|---|---|
| Objeto | O elemento que você quer manipular. | O quê? | Um Carro | Range("A1") |
| Propriedade | Uma característica ou estado do objeto. | Como ele é? | Carro.Cor = "Azul" | Range("A1").Value = 500Range("A1").Font.Bold = True |
| Método | Uma ação ou comando que o objeto sabe executar. | O que ele faz? | Carro.Acelerar() | Range("A1").ClearContentsWorksheets("Aba1").Delete |
A Sintaxe Universal do VBA:Objeto.Propriedade = Valor (Altera um estado)Objeto.Metodo (Executa uma ação)
A função RGB() e o objeto Selection
Cores no VBA são definidas pela função RGB(vermelho; verde; azul), onde cada componente vai de 0 a 255 (ex: RGB(33, 115, 70) é um verde escuro). Já Selection é um objeto especial que representa “o que estiver selecionado na tela agora” — diferente de Range("A1"), que sempre aponta para a mesma célula, Selection muda dependendo de onde o usuário clicou por último. O Gravador de Macros usa Selection com frequência porque ele grava literalmente o que você clicou.
4. O Gravador de Macros sob o Microscópio
O Gravador de Macros funciona como um “tradutor em tempo real”. Enquanto você clica nos menus, formata células e digita textos com o mouse e teclado, o motor do Excel escreve internamente as instruções correspondentes em VBA dentro de um Módulo.
- Vantagem: Excelente para descobrir o nome de objetos, propriedades e métodos desconhecidos.
- Limitação: O gravador registra tudo de forma estritamente literal (usando excessivamente
SelecteSelection), exigindo que o programador posteriormente refine o código para deixá-lo limpo, dinâmico e veloz.
5. O Ambiente de Desenvolvimento: VBE (Visual Basic Editor)
O Excel possui uma IDE completa embutida chamada VBE.
- Atalho Universal: Pressione
Alt + F11no teclado para abrir/fechar o editor de código. - Janela Project Explorer (
Ctrl + R): Mostra todos os arquivos abertos, suas abas (Planilha1,EstaPasta_de_trabalho) e os Módulos (onde os códigos das macros ficam armazenados). - Janela de Código: Área central onde o script é lido e editado.
6. Segurança e Extensões de Arquivo (.xlsx vs .xlsm)
Por motivos de segurança cibernética (prevenção contra vírus de macro), planilhas padrão salvas como .xlsx não salvam códigos VBA.
- Para manter suas macros ativas, salve o documento obrigatoriamente como: Pasta de Trabalho Habilitada para Macro do Excel (
.xlsm). - Ao abrir um arquivo
.xlsm, o Excel exibirá uma barra de alerta amarela: clique sempre em “Habilitar Conteúdo” para liberar a execução dos códigos.
📖 Exemplo Guiado: O Seu Primeiro Robô de Automação
Antes de formatar um relatório extenso, vamos criar uma macro simples que escreve e formata uma célula de identificação.
Passo a Passo
- Abra uma nova pasta de trabalho e salve imediatamente como: Pasta de Trabalho Habilitada para Macro (.xlsm).
- Habilite a Guia Desenvolvedor:
- Clique com o botão direito em qualquer lugar da faixa de opções superior > selecione Personalizar a Faixa de Opções.
- Na coluna da direita, marque a caixa de seleção Desenvolvedor e dê OK.
- Vá na guia Desenvolvedor e clique em Gravar Macro.
- Configure os parâmetros da gravação:
- Nome da macro:
MeuPrimeiroRobo(Sem espaços ou caracteres especiais). - Armazenar macro em: Esta pasta de trabalho.
- Clique em OK (A gravação começará).
- Nome da macro:
- Executando as ações gravadas:
- Clique na célula A1 e digite:
CENTRAL LOGÍSTICA FASTLOG. - Aplique Negrito e coloque o fundo da célula em Amarelo.
- Clique na célula A1 e digite:
- Vá na guia Desenvolvedor e clique em Parar Gravação.
✅ Resultado Esperado (Exemplo)
- Apague o conteúdo e retire a cor da célula A1.
- Pressione
Alt + F8(menu de Macros), selecioneMeuPrimeiroRoboe clique em Executar. - Em menos de um segundo, o texto reaparecerá perfeitamente formatado.
📝 Atividade Extra: Questionário de Fixação (Caderno)
Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.
- O que é uma Macro e em qual linguagem ela é escrita no Excel?
- Descreva a hierarquia do Modelo de Objetos do Excel (Application > Workbook > Worksheet > Range).
- Qual a diferença entre um Objeto, uma Propriedade e um Método em VBA?
- Qual o atalho de teclado para abrir o Editor VBA (VBE)?
- Quais são as vantagens e limitações do Gravador de Macros?
- Por que é obrigatório salvar um arquivo com macros no formato .xlsm em vez de .xlsx?
- O que acontece se você tentar salvar um arquivo com código VBA como .xlsx?
- Como vincular uma macro gravada a um botão na planilha?
- Dê um exemplo da sintaxe “Objeto.Propriedade = Valor” e outro de “Objeto.Método”.
- Por que é importante clicar em “Habilitar Conteúdo” ao abrir um arquivo .xlsm de fonte confiável?