Guia do Excel

Como Criar Relatórios SQL no Excel

Neste artigo veja como criar relatórios de SQL Excel com VBA passo-a-passo. No exemplo fazemos com access, mas funciona com qualquer banco.

MR
Marcos Rieper

Especialista em Excel

Atualizado em 08 de julho de 2026 Publicado em 02 de outubro de 2023 4 min de leitura

Neste artigo veja como criar relatórios de SQL Excel com VBA passo-a-passo. Neste exemplo fazemos com access, mas pode ser feito com qualquer banco de dados como por exemplo SQL Server.

Material gratuito

Planilha de Controle Financeiro no Excel

Tenha um controle bonito e completo do seu financeiro.

  • Categorias e subcategorias já configuradas
  • Planilhas separadas por tabela (configuração, lançamentos, resumo)
  • Personalize com suas próprias categorias e ícones

Baixe grátis — receba o link no seu e-mail

Configurações do Relatório SQL

No nosso exemplo de relatório criamos uma planilha de configurações, aonde colocamos as opções de:

  1. Local Banco: Local aonde está o arquivo do banco de dados Access.
  2. Vendedores: Lista com todos os vendedores que poderá selecionar no relatório.
  3. Ordem: Campos do relatório pelos quais pode ordenar o relatório.
  4. Selecionado: Campo que identifica a ordem que será aplicada no gráfico.
Como Criar Relatorios SQL no Excel 1

Relatório com SQL no Excel

O relatório com SQL no Excel tem a seguinte estrutura, nele temos os filtros ao topo, os campos do relatório e a ordem.

Veja que temos aqui os filtros de:

  1. Data Inicial: Data inicial do relatório.
  2. Data final: Data final do período do relatório.
  3. Vendedor: Nome do vendedor que será aplicado no filtro do relatório, podendo deixar em branco no caso queira todos os vendedores.

No campo de ordem você pode selecionar qualquer ordem do relatório, ele será aplicado de forma crescente ou decrescente.

Como Criar Relatorios SQL no Excel 2

Código VBA para o Relatório SQL

No relatório SQL colocamos o código abaixo.

Para fazer isso primeiro habilite as macros, clique neste link e faça desta forma: https://www.guiadoexcel.com.br/as-macros-foram-desabilitadas-como-habilitar-macros-no-excel/

Clique então em Inserir->Módulo e coloque o código conforme vemos abaixo:

Como Criar Relatorios SQL no Excel 3
Option Explicit

Global cnn As ADODB.Connection

Private Sub gsConectarBD()
    Dim SQL As String
    
    If cnn Is Nothing Then
        Set cnn = New ADODB.Connection
    End If
    
    If cnn.State <> 1 Then
        'String de conexão VBA Access
        SQL = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
              "Data Source=" & Configuracoes.Range("localBanco").Value & ";" & " Jet OLEDB:Database"
        
        cnn.Open SQL
    End If
End Sub

Private Sub gsDesconectarBD()
    On Error Resume Next
    
    cnn.Close
End Sub

Public Sub lsRelatorioComissoes()
    On Error GoTo TratarErro
    
    Dim lsql        As String
    Dim lrs         As ADODB.Recordset
    Dim lsht        As Worksheet
    Dim tbl         As ListObject
    
    'Conectar
    gsConectarBD
    
    Set lrs = New ADODB.Recordset
    Set lsht = relComissoes
    Set tbl = lsht.ListObjects("tRelatorio")
    
    Application.EnableEvents = False
    
    'Limpar a tabela
    If Not tbl Is Nothing Then
        tbl.DataBodyRange.Delete
    End If
    
    lsql = "SELECT VENDA.ID, VENDA.DTVENDA, CATEGORIA.DESCATEGORIA, PRODUTO.DESPRODUTO, " & _
           "VENDEDOR.DESVENDEDOR, PRODUTO.NUMPRECO AS VLRUNIT, VENDA.NUMQTDE, " & _
           "VENDA.NUMQTDE*PRODUTO.NUMPRECO AS TOTAL, VENDEDOR.PERCCOMISSAO, " & _
           "VENDA.NUMQTDE*PRODUTO.NUMPRECO*VENDEDOR.PERCCOMISSAO AS COMISSAO " & _
           "FROM ((VENDA INNER JOIN PRODUTO ON VENDA.IDPRODUTO = PRODUTO.ID) " & _
           "INNER JOIN CATEGORIA ON PRODUTO.IDCATEGORIA = CATEGORIA.ID) " & _
           "INNER JOIN VENDEDOR ON VENDA.IDVENDEDOR = VENDEDOR.ID " & _
           "WHERE (((VENDA.DTVENDA) Between @datainicial And @datafinal) AND " & _
           "((VENDEDOR.DESVENDEDOR) @vendedor)) ORDER BY @ordem @forma;"
           
    lsql = Replace(lsql, "@datainicial", "#" & Format(lsht.Range("dtini"), "mm/dd/yyyy") & "#")
    lsql = Replace(lsql, "@datafinal", "#" & Format(lsht.Range("dtfim"), "mm/dd/yyyy") & "#")
    
    If lsht.Range("vendedor").Value <> "" Then
        lsql = Replace(lsql, "@vendedor", "='" & lsht.Range("vendedor") & "'")
    Else
        lsql = Replace(lsql, "@vendedor", "<>""""")
    End If
    
    lsql = Replace(lsql, "@ordem", Configuracoes.Range("ordem").Value)
    
    If lsht.Range("forma").Value = "Crescente" Then
        lsql = Replace(lsql, "@forma", "ASC")
    Else
        lsql = Replace(lsql, "@forma", "DESC")
    End If
    
    'Consulta
    lrs.Open lsql, cnn, adOpenStatic, adLockBatchOptimistic
    
    'Carrega na planilha
    lsht.Range("B12").CopyFromRecordset lrs
    
Sair:
    Application.EnableEvents = True
    Exit Sub
TratarErro:
    MsgBox "Erro na aplicação: " & CStr(Err.Number) & " - " & Err.Description
    GoTo Sair
    Resume
End Sub

O código acima realiza a conexão com o banco de dados Access e realiza uma consulta com os parâmetros presentes no relatório, além da ordem dos campos que serão aplicadas.

Para mudar e fazer uma conexão com outros bancos de dados é necessário mudar a String de conexão.

No site: https://www.connectionstrings.com/ você pode pegar a string de conexão para vários tipos de bancos:

Como Criar Relatorios SQL no Excel 7

Download Planilha Como Criar Relatórios SQL no Excel

Clique no botão abaixo para realizar o  download do Excel de exemplo:

Download — baixe aqui: Criar Relatórios SQL no Excel
Criar Relatórios SQL no Excel81 KB · Excel 2010 ou superior · com macrosPreencha seus dados para receber o link de download no seu e-mail.

Este conteúdo foi útil?

Continue lendo