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:
- ID
- Fornecedor
- Data
- Valor
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.
No botão executar criado à partir de uma imagem clique com botão direito em atribuir macro e marque a opção lsConsultaSQLExcel.
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.