Usando o ChatGPT para Escrever Macros VBA do Excel

Primeiros Passos: Sua Primeira Macro VBA Gerada por IA

O ChatGPT pode gerar macros VBA completas e funcionais a partir de descrições em linguagem simples. Para executar uma macro, abra o Excel, pressione Alt + F11 para abrir o editor VBA, insira um novo módulo (Inserir > Módulo), cole o código e execute com F5. Seu primeiro prompt deve ser simples e testável — algo como "Escreva uma macro VBA que pegue o intervalo selecionado e mude a cor de fundo para azul claro." Isso verifica se o código gerado é executado no seu ambiente antes de enfrentar automações complexas.

Sempre salve sua pasta de trabalho como arquivo habilitado para macro (.xlsm), não como .xlsx normal. As pastas de trabalho padrão removem todo o código VBA ao salvar. Se você vir uma barra de aviso de segurança abaixo da faixa de opções, clique em "Habilitar Conteúdo" para permitir a execução de macros. Para código gerado pelo ChatGPT, comece em uma cópia de teste da sua pasta de trabalho até ter certeza de que a macro se comporta conforme esperado.

Macros de Produtividade: Exemplos Reais que Você Pode Usar Hoje

Macro 1: Formatar Automaticamente uma Tabela de Dados

Prompt: "Escreva uma macro VBA que pegue a seleção atual, aplique negrito à linha de cabeçalho, adicione bordas inferiores a todas as células de dados, ajuste automaticamente as larguras das colunas e congele a linha superior."

Código gerado:

Sub FormatDataTable()
    Dim rng As Range
    Set rng = Selection
    
    ' Formatação da linha de cabeçalho
    With rng.Rows(1)
        .Font.Bold = True
        .Interior.Color = RGB(68, 114, 196)
        .Font.Color = RGB(255, 255, 255)
    End With
    
    ' Adicionar bordas a todas as células
    With rng.Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = RGB(180, 180, 180)
    End With
    
    ' Ajustar automaticamente as colunas
    rng.EntireColumn.AutoFit
    
    ' Congelar linha superior
    ActiveWindow.SplitRow = 1
    ActiveWindow.FreezePanes = True
    
    MsgBox "Tabela formatada com sucesso!", vbInformation
End Sub

Esta macro é segura e reversível (use Ctrl+Z após a execução) e demonstra padrões VBA essenciais: objetos Range, blocos With para configuração eficiente de propriedades e feedback do usuário via MsgBox.

Macro 2: Exportar Cada Planilha como PDF Separado

Prompt: "Escreva uma macro VBA que exporte cada planilha da pasta de trabalho ativa como um arquivo PDF separado, salvo na mesma pasta da pasta de trabalho, com nomes de arquivo no formato 'NomePasta_NomePlanilha.pdf'. Ignore planilhas ocultas."

Código gerado:

Sub ExportSheetsAsPDF()
    Dim ws As Worksheet
    Dim folderPath As String
    Dim pdfName As String
    
    folderPath = ThisWorkbook.Path & "\"
    
    For Each ws In ThisWorkbook.Worksheets
        If ws.Visible = xlSheetVisible Then
            pdfName = folderPath & _
                      Replace(ThisWorkbook.Name, ".xlsm", "") & _
                      "_" & ws.Name & ".pdf"
            
            ws.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=pdfName, _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True
            
            Debug.Print "Exportado: " & pdfName
        End If
    Next ws
    
    MsgBox "Exportação concluída! Verifique a Janela de Verificação Imediata (Ctrl+G) para detalhes.", vbInformation
End Sub

Esta macro usa ExportAsFixedFormat, o mesmo mecanismo que o Excel usa para Arquivo > Salvar Como > PDF. Ela percorre a coleção Worksheets, ignorando planilhas ocultas, e constrói nomes de arquivo dinamicamente por concatenação de strings. As instruções Debug.Print permitem verificar a saída na Janela de Verificação Imediata.

Macro 3: Enviar Emails com Outlook a partir de Dados do Excel

Prompt: "Escreva uma macro VBA que leia endereços de email da coluna A (começando em A2), assuntos da coluna B e corpo do texto da coluna C. Para cada linha, envie um email via Outlook. Pare quando a coluna A estiver vazia. Adicione um atraso de 2 segundos entre os envios."

Código gerado:

Sub SendBulkEmails()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim i As Long
    Dim lastRow As Long
    
    On Error Resume Next
    Set OutApp = GetObject(, "Outlook.Application")
    If OutApp Is Nothing Then
        Set OutApp = CreateObject("Outlook.Application")
    End If
    On Error GoTo 0
    
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To lastRow
        If Cells(i, 1).Value = "" Then Exit For
        
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = Cells(i, 1).Value
            .Subject = Cells(i, 2).Value
            .Body = Cells(i, 3).Value
            .Send
        End With
        
        Application.Wait Now + TimeValue("00:00:02")
    Next i
    
    Set OutMail = Nothing
    Set OutApp = Nothing
    MsgBox "Todos os emails foram enviados!", vbInformation
End Sub

A linha Application.Wait impõe um atraso de 2 segundos entre os envios, o que ajuda a evitar os limites de taxa ou filtros de spam do Outlook ao enviar em massa. O tratamento de erros com On Error Resume Next e a verificação Nothing lida elegantemente com o caso em que o Outlook ainda não está em execução.

Engenharia de Prompt para Código VBA Melhor

A qualidade do VBA gerado pelo ChatGPT depende muito de como você formula a solicitação. Use esta abordagem estruturada:

  1. Defina o gatilho: "Executar ao clicar em um botão" vs "Executar automaticamente ao abrir a pasta de trabalho" vs "Executar no intervalo selecionado".
  2. Especifique os locais dos dados: "A coluna A tem nomes de clientes começando em A2, a coluna B tem endereços de email."
  3. Descreva o resultado exato: "Para cada linha, crie uma nova planilha com o nome do cliente e copie seus dados para ela."
  4. Declare os requisitos de tratamento de erros: "Pule linhas sem endereço de email em vez de mostrar um erro."
  5. Mencione as restrições: "A pasta de trabalho tem 50.000 linhas, otimize para velocidade" ou "Deve funcionar no Excel 2016 no Windows."

Dica profissional: Para macros complexas, divida a solicitação em partes menores. Primeiro peça a estrutura do loop principal, depois peça cada sub-rotina separadamente. Peça ao ChatGPT para adicionar comentários enquanto escreve; isso facilita muito a depuração.

Depurando Código VBA Gerado por IA

As macros geradas por IA raramente funcionam perfeitamente na primeira execução. Aqui está um fluxo de trabalho de depuração sistemático:

  1. Compile primeiro: No editor VBA, vá para Depurar > Compilar VBAProject. Isso detecta erros de sintaxe, variáveis não declaradas e referências ausentes antes do tempo de execução.
  2. Adicione Option Explicit: Se o código gerado não tiver Option Explicit no topo do módulo, adicione-o. Isso força a declaração de variáveis e detecta erros de digitação nos nomes das variáveis.
  3. Use pontos de interrupção: Clique na margem esquerda ao lado de uma linha para definir um ponto de interrupção e pressione F8 para avançar linha por linha. Passe o mouse sobre as variáveis para inspecionar seus valores atuais.
  4. Adicione instruções Debug.Print: Insira Debug.Print "Linha: " & i & " Valor: " & Cells(i,1).Value em pontos estratégicos para rastrear o fluxo de execução.
  5. Cole os erros de volta no ChatGPT: Copie a mensagem de erro exata e o número da linha e pergunte "Recebi 'Erro em tempo de execução 1004: Erro definido pelo aplicativo ou objeto' na linha 12. Aqui está o código completo. O que está causando isso?" A IA muitas vezes pode se autocorrigir quando recebe feedback de erro específico.

Considerações de Segurança para Macros Geradas por IA

As macros VBA têm acesso completo ao seu sistema de arquivos, registro e rede. Trate o código gerado por IA com a mesma cautela que o código baixado da internet:

Construindo um Kit de Ferramentas VBA Reutilizável

Salve suas macros geradas por IA mais confiáveis em uma Pasta de Trabalho de Macros Pessoais (Personal.xlsb). Esta pasta de trabalho oculta é carregada sempre que você abre o Excel, tornando suas macros disponíveis em todas as pastas de trabalho. Para criá-la, grave qualquer macro simples e escolha "Pasta de Trabalho de Macros Pessoais" como local de armazenamento. Em seguida, abra o editor VBA, encontre VBAProject (PERSONAL.XLSB) e adicione módulos contendo suas macros selecionadas.

Organize as macros em módulos por função: um para formatação, um para exportação de dados, um para automação de email e um para gerenciamento de planilhas. Adicione uma guia de faixa de opções personalizada (Arquivo > Opções > Personalizar Faixa de Opções) com botões mapeados para suas macros mais usadas para acesso com um clique. Com o tempo, este kit de ferramentas substitui dezenas de etapas manuais e garante consistência em todos os seus projetos do Excel.

Tem dúvidas ou encontrou algum erro neste artigo?