Hay muchas formas de obtener datos de fuentes externas en una hoja de trabajo.
También puede obtener datos de Internet, archivos de texto u otros Excel o
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
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.
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.
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