SQL no Excel – Usar Excel como Banco de Dados

Neste artigo você aprenderá como consultar SQL no Excel e usar como banco de dados.

Consultar Excel

No nosso exemplo temos uma tabela de compras aonde temos os campos:

  1. ID
  2. Fornecedor
  3. Data
  4. Valor
SQL no Excel - Usar Excel como Banco de Dados 1

Assim podemos realizar a consulta dos dados via SQL dentro do Excel usando VBA.

Consulta SQL VBA

No nosso exemplo colocamos uma célula mesclada aonde colocaremos o código SQL para realizar a consulta de dados.

SQL no Excel - Usar Excel como Banco de Dados 2

No botão executar criado à partir de uma imagem clique com botão direito em atribuir macro e marque a opção lsConsultaSQLExcel.

SQL no Excel - Usar Excel como Banco de Dados 3

No código VBA nós temos um código que serve para consultar planilhas Excel usando SQL.

Para isso realizamos uma consulta usando um conector ADODB.Connection para conectar com o arquivo Excel e para retornar os dados usamos o Recordset.

Para realizar a conexão usamos este código de connectionstring:

strCon = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\caminho\para\arquivo.xlsx;Extended Properties=’Excel 12.0 Xml;HDR=YES’;”

Nele você muda o caminho do arquivo para o caminho completo do arquivo ou se preferir para consultar na própria pasta de trabalho use este outro código de conexão:

strCon = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & ActiveWorkbook.Path & “\” & ActiveWorkbook.Name & “;Extended Properties=’Excel 12.0 Xml;HDR=YES’;”

Na consulta usamos o código abaixo aonde são realizadas consultas na tabela definida.

strSQL = Replace(SQL.Range(“tSql”).Value, “TABELA”, “[Compras$” & Replace(Compras.ListObjects(“tCompras”).Range.Address, “$”, “”) & “]”) & “;”

Perceba que nela usamos o nome TABELA, e na sua consulta SQL você deve usar ela no lugar da tabela se que será consultada, pois ela será substituída pelo caminho completo do intervalo da tabela tCompras.

Então altere o código mudando o nome da planilha e também da tabela conforme a planilha aonde está a tabela e também mude o nome da tabela para consultar a informação.

Veja ume xemplo de código SQL: SELECT * FROM [Compras$B5:E3005] WHERE FORNECEDOR = ‘ZALTEC’;

Veja que temos o nome da planilha e também o intervalo sempre é necessário passar desta forma o caminho: [Compras$B5:E3005] .

O código VBA para realizar a consulta é o abaixo:

Sub lsConsultaSQLExcel()
    On Error GoTo TratarErro

    'Definir as variáveis
    Dim conn    As ADODB.Connection
    Dim rs      As ADODB.Recordset
    Dim strCon  As String
    Dim strSQL  As String
    Dim rng     As Range
    Dim i       As Integer
    
    'Limpar resultados
    SQL.Range("b9:z1048576").ClearContents
    
    'Consultar dados em outro arquivo
    'strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\caminho\para\arquivo.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES';"
    
    'Consultar dados no arquivo atual
    strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.Path & "\" & ActiveWorkbook.Name & ";Extended Properties='Excel 12.0 Xml;HDR=YES';"
    
    'Definir a consulta SQL
    strSQL = Replace(SQL.Range("tSql").Value, "TABELA", "[Compras$" & Replace(Compras.ListObjects("tCompras").Range.Address, "$", "") & "]") & ";"
    
    'Definir o intervalo de células onde os resultados serão exibidos
    Set rng = ThisWorkbook.Worksheets("SQL").Range("b10")
    
    'Abrir a conexão com o arquivo Excel
    Set conn = New ADODB.Connection
    conn.Open strCon
    
    'Executar a consulta SQL
    Set rs = New ADODB.Recordset
    rs.Open strSQL, conn
    
    'Colar os dados da consulta
    rng.CopyFromRecordset rs
    
    'Consultar cabeçalhos
    For i = 0 To rs.Fields.Count - 1
        SQL.Cells(9, 2 + i).Value = rs.Fields(i).Name
    Next i
       
Sair:
    'Fechar a conexão e liberar os recursos
    rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
    Exit Sub
TratarErro:
    GoTo Sair
End Sub

Download Consultar Excel com SQL Excel como Banco de Dados

Realize o download da planilha de cálculo de idade no Excel neste botão abaixo. Basta se inscrever na nossa newsletter gratuita para o download automático.

Baixe a planilha


Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel