TOP

Consulta SQL usando VBA Excel

Descripción

Hay muchas formas de obtener datos de fuentes externas en una hoja de trabajo. Excel . En este artículo, veremos cómo consultar datos de un archivo de base de datos. MS Access y de un archivo Excel mediante el uso SQL en VBA . Sí, vamos a mezclarlo un poco. SQL con VBA ! ¡Y es mejor de lo que piensas!

SQL representa Structured Query Language (lenguaje de consulta estructurado) y es un lenguaje utilizado para recuperar información de bases de datos (como MS Access, MS SQL Server, Oracle, Sybase, SAP, MySQL y otros).

También puede obtener datos de Internet, archivos de texto u otros Excel o CSV archivos.


1. Consulta SQL desde Excel VBA al archivo MS Access

Entonces necesitamos una conexión a la base de datos (variable varConn en la macro siguiente) y consulta SQL (variable varSQL ) para automatizar la recuperación de datos de la base de datos para el informe. En el siguiente ejemplo hay consulta SQL , que recibe datos de una pequeña base de datos en MS Access.

Hacer clic cargar la base de datos MS Access (test.mdb) .

El archivo MS Access tendrá este aspecto:

Escribamos nuestra macro que se ejecutará. consulta SQL .

abre el menú Servicio - Macro - Editor Visual Basic , inserte el nuevo módulo (menú Insert - Module ) y copie el texto de la macro allí:

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 

Haga clic en guardar y regrese a Excel. Elige del menú Ver - Macros (Alt+F8) el nombre de nuestra macro " SQLQuery_1 ". Aparecerá un cuadro de diálogo, presiónelo. Base de datos... , busque nuestro archivo de Access y haga clic ОК .

Ahora podemos ver que nuestra macro consulta ha levantado las columnas. Month , Product y City de la mesa Sumproduct de la base de datos test.mdb al archivo Excel.

2. Consulta SQL desde VBA al archivo cerrado Excel

De manera similar, podemos obtener datos de un archivo Excel normal como si fuera una base de datos. Para ello, es necesario reescribir ligeramente el código de nuestra macro y cambiar el controlador de conexión de Access a Excel.

Exportamos la mesa. Sumproduct desde Access en Excel y guarda el archivo. A continuación, insertamos nuestro código modificado en un nuevo módulo y ejecutamos la 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 

Aparecerá una ventana donde podremos seleccionar nuestro archivo Excel (debe llamarse Sumproduct.xlsx o con otra extensión). Lo encontramos y lo seleccionamos. presionemos ОК , y obtenemos los mismos datos que del archivo de Access.

Artículos sobre el tema: