TOP

Consulta SQL usando VBA Excel

Descrição

Há muitas maneiras de obter dados de fontes externas em uma planilha Excel . Neste artigo, veremos como consultar dados de um arquivo de banco de dados MS Access e de um arquivo Excel usando SQL em VBA . Sim, vamos misturar um pouco SQL com VBA ! E é melhor do que você imagina!

SQL apoia Structured Query Language (linguagem de consulta estruturada) e é uma linguagem usada para recuperar informações de bancos de dados (como MS Access, MS SQL Server, Oracle, Sybase, SAP, MySQL e outros).

Você também pode obter dados da Internet, arquivos de texto ou outros Excel ou CSV arquivos.


1. Consulta SQL de Excel VBA para arquivo MS Access

Então precisamos de uma conexão com o banco de dados (variável varConn na macro abaixo) e Consulta SQL (variável varSQL ) para automatizar a recuperação de dados do banco de dados para o relatório. No exemplo abaixo há Consulta SQL , que recebe dados de um pequeno banco de dados em MS Access.

Clique carregar o banco de dados MS Access (test.mdb) .

O arquivo MS Access ficará assim:

Vamos escrever nossa macro que será executada Consulta SQL .

Abra o cardápio Serviço - Macro - Editor Visual Basic , insira o novo módulo (cardápio Insert - Module ) e copie o texto da macro lá:

Sub SQLQuery_1()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

Clique em salvar e retorne para Excel. Escolha no cardápio Exibir - Macros (Alt+F8) o nome da nossa macro " SQLQuery_1 ". Uma caixa de diálogo aparecerá, pressione-a Base de dados... , procure nosso arquivo Access e clique ОК .

Agora podemos ver que nossa consulta macro puxou as colunas Month , Product e City Da mesa Sumproduct do banco de dados test.mdb para arquivar Excel.

2. Consulta SQL de VBA para o arquivo fechado Excel

Da mesma forma, podemos obter dados de um arquivo Excel normal como se fosse um banco de dados. Para isso, o código da nossa macro precisa ser ligeiramente reescrito e o driver de conexão alterado de Access para Excel.

Exportamos a mesa Sumproduct do Access em Excel e salve o arquivo. A seguir, inserimos nosso código modificado em um novo módulo e executamos a macro:

Sub SQLQuery_2()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

Irá aparecer uma janela onde podemos selecionar nosso arquivo Excel (deve ser chamado Sumproduct.xlsx ou com outra extensão). Nós o encontramos e selecionamos. Vamos pressionar ОК e obtemos os mesmos dados do arquivo Access.

Artigos sobre o tema: