Como Gerar Relatórios Dinâmicos e Gráficos Avançados com VBA Excel
- Rafael Pinheiro
- 5 de jun. de 2024
- 4 min de leitura
No último post, aprendemos a importar e manipular dados de diferentes fontes usando VBA. Hoje, vamos explorar como gerar relatórios dinâmicos e gráficos avançados no Excel utilizando VBA. Este tutorial é perfeito para quem deseja criar relatórios automatizados e visuais poderosos para análise de dados.
Por que Usar VBA para Relatórios e Gráficos?
Automatizar a geração de relatórios e gráficos com VBA oferece vários benefícios:
Eficiência: Criação rápida de relatórios complexos.
Consistência: Garantia de que os relatórios sejam gerados da mesma maneira toda vez.
Flexibilidade: Personalização total dos relatórios e gráficos de acordo com suas necessidades.
Interatividade: Relatórios dinâmicos que se atualizam automaticamente com novos dados.
Criando Relatórios Dinâmicos
Vamos começar criando um relatório dinâmico que resume dados de vendas. Este relatório incluirá cálculos automáticos e uma formatação condicional.
Passo a Passo:
Configurando o Ambiente:
Certifique-se de que a guia "Desenvolvedor" esteja habilitada no Excel.
Abra o Editor VBA (Alt + F11).
Criando o Script VBA:
Insira um novo módulo no Editor VBA.
Copie e cole o seguinte código:
Sub GerarRelatorioDinamico() Dim ws As Worksheet Dim wsRelatorio As Worksheet Dim ultimo As Long Dim totalVendas As Double ' Definindo a planilha de dados e a de relatório Set ws = Sheets("Vendas") Set wsRelatorio = Sheets("Relatorio") wsRelatorio.Cells.Clear ' Limpa dados antigos ' Copiando cabeçalhos ws.Rows(1).Copy Destination:=wsRelatorio.Rows(1) ' Copiando dados ultimo = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ws.Rows("2:" & ultimo).Copy Destination:=wsRelatorio.Rows(2) ' Calculando totais de vendas totalVendas = Application.WorksheetFunction.Sum(wsRelatorio.Range("B2:B" & ultimo)) wsRelatorio.Cells(ultimo + 1, 1).Value = "Total Vendas" wsRelatorio.Cells(ultimo + 1, 2).Value = totalVendas ' Aplicando formatação condicional With wsRelatorio.Range("B2:B" & ultimo) .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=1000" .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.399945066682943 End With End With ' Ajustando largura das colunas wsRelatorio.Columns.AutoFitEnd SubExecutando o Script:
No Editor VBA, clique em "Executar" (ícone de play) ou pressione F5.
O script gerará um relatório dinâmico na planilha "Relatorio".
Criando Gráficos Avançados com VBA Excel
Agora, vamos criar um gráfico avançado que visualize os dados do relatório de vendas.
Passo a Passo:
Criando o Script VBA para o Gráfico:
Insira um novo módulo no Editor VBA.
Copie e cole o seguinte código:
Sub CriarGraficoVendas() Dim ws As Worksheet Dim chartObj As ChartObject Dim ultimo As Long ' Definindo a planilha de relatório Set ws = Sheets("Relatorio") ' Encontrando a última linha com dados ultimo = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Criando o gráfico Set chartObj = ws.ChartObjects.Add(Left:=300, Width:=375, Top:=50, Height:=225) With chartObj.Chart .SetSourceData Source:=ws.Range("A1:B" & ultimo) .ChartType = xlColumnClustered .HasTitle = True .ChartTitle.Text = "Relatório de Vendas" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Text = "Produtos" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Text = "Vendas" End WithEnd SubExecutando o Script:
No Editor VBA, clique em "Executar" (ícone de play) ou pressione F5.
O script criará um gráfico avançado na planilha "Relatorio".
Personalizando Relatórios e Gráficos
Você pode personalizar ainda mais seus relatórios e gráficos adicionando elementos como:
Filtros Dinâmicos: Para permitir a seleção interativa de dados.
Gráficos Interativos: Como gráficos de pizza, linhas ou áreas que se atualizam com os dados.
Dashboards: Combinação de gráficos e tabelas dinâmicas para uma visão abrangente.
Exemplo de Relatório e Gráfico Combinado
Vamos combinar tudo o que aprendemos em um script que gera um relatório dinâmico e cria um gráfico correspondente.
Passo a Passo:
Criando o Script Combinado:
Insira um novo módulo no Editor VBA.
Copie e cole o seguinte código:
Sub GerarRelatorioEGrafico() Dim ws As Worksheet Dim wsRelatorio As Worksheet Dim ultimo As Long Dim totalVendas As Double Dim chartObj As ChartObject ' Definindo a planilha de dados e a de relatório Set ws = Sheets("Vendas") Set wsRelatorio = Sheets("Relatorio") wsRelatorio.Cells.Clear ' Limpa dados antigos ' Copiando cabeçalhos ws.Rows(1).Copy Destination:=wsRelatorio.Rows(1) ' Copiando dados ultimo = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ws.Rows("2:" & ultimo).Copy Destination:=wsRelatorio.Rows(2) ' Calculando totais de vendas totalVendas = Application.WorksheetFunction.Sum(wsRelatorio.Range("B2:B" & ultimo)) wsRelatorio.Cells(ultimo + 1, 1).Value = "Total Vendas" wsRelatorio.Cells(ultimo + 1, 2).Value = totalVendas ' Aplicando formatação condicional With wsRelatorio.Range("B2:B" & ultimo) .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=1000" .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent6 .TintAndShade = 0.399945066682943 End With End With ' Ajustando largura das colunas wsRelatorio.Columns.AutoFit ' Criando o gráfico Set chartObj = wsRelatorio.ChartObjects.Add(Left:=300, Width:=375, Top:=50, Height:=225) With chartObj.Chart .SetSourceData Source:=wsRelatorio.Range("A1:B" & ultimo) .ChartType = xlColumnClustered .HasTitle = True .ChartTitle.Text = "Relatório de Vendas" .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Text = "Produtos" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Text = "Vendas" End WithEnd SubExecutando o Script:
No Editor VBA, clique em "Executar" (ícone de play) ou pressione F5.
O script gerará um relatório dinâmico e criará um gráfico avançado na planilha "Relatorio".
Como é de praxe aqui no blog, segue mais uma dica de como usar gráficos dinâmicos em userforms do VBA Excel.
Conclusão
Gerar relatórios dinâmicos e gráficos avançados com VBA no Excel pode transformar a maneira como você analisa e apresenta dados. Com prática e personalização, você pode criar ferramentas poderosas que economizam tempo e fornecem insights valiosos.
Convite à interação: Se você gostou deste post, não se esqueça de se inscrever no blog e deixar seus comentários. Quais são suas maiores dificuldades com relatórios e gráficos no Excel? Quais temas você gostaria de ver aqui? Até a próxima!




Comentários