xltoday.net

EXCEL 2007 TABLAS Y GRAFICOS


Importar celdas Excel a Excel (ADO)

Con ADO podemos conectar a casi cuaquier base de datos, incluyendo Excel mismo. En este ejemplo mostramos como conectar a otro libro Excel desde Excel. Luego importaremos los datos. Todo esto sin abrir el otro libro Excel (la base de datos).

La importación es muy eficaz, tarda poco, y puede ayudar mucho en la "automización" de tus rutinas diarias.

Procedimiento

Empezamos con un libro Excel vacío. Luego crearemos un módulo VBA dentro de este libro. En este módulo escribiremos el código. El libro de las celdas a importar debe tener rótulos en la primera fila, y los datos a partir de la segunda.

Crear el módulo

Entra a Herramientas - Macros - Editor VBA. A la izquierda ves (si no lo ves CTRL+R) algo como "ProyectoVBA (Tu libro). Marca ese proyecto. Insertar - Módulo.

Doble click en el módulo nuevo, y a la derecha sale un espacio blanco, es para el código. Herramientas - Referencias. Marca Microsoft ActiveX DataObjects x.x Library.
Ahora cierras el editor VBA, vuelves a Excel. Guardamos el libro.

El código


Sub Conectar_Excel_ADO() 'importar datos de un libro Excel sin abrirlo. 'dimensiones Dim datConnection As ADODB.Connection Dim recSet As ADODB.Recordset Dim recCampo As ADODB.Field Dim strDB, strSQL As String Dim i As Long 'ruta al archivo Excel (la base de datos) 'strDB = ThisWorkbook.Path & "\" & _ "MiArchivoExcel.xls" strDB = "C:\MiArchivoExcel.xls" 'si otra carpeta 'conectar Set datConnection = New ADODB.Connection Set recSet = New ADODB.Recordset datConnection.Open "DRIVER=Microsoft Excel _ Driver (*.xls);" & "DBQ=" & strDB 'consulta SQL 'strSQL = "SELECT * FROM [NuestroRango]" strSQL = "SELECT * FROM [Hoja1$A1:Q1000]" 'abrimos el recordset recSet.Open strSQL, datConnection, adOpenStatic 'copiar datos ActiveSheet.Cells.ClearContents ActiveSheet.Cells(2, 1).CopyFromRecordset recSet 'copiar rotulos (campos) i = 1 For Each recCampo In recSet.Fields ActiveSheet.Cells(1, i) = _ recCampo.Name: i = i + 1 Next recCampo 'desconectar (¡importante!) recSet.Close datConnection.Close 'cerrar los objetos Set recSet = Nothing Set datConnection = Nothing End Sub

Ejecutar macro

Para ejecutar esta macro entras a Herramientas - Macros. Allí encontrarás la macro "Conectar_Excel_ADO". Marca esta, y "Ejecutar".