Importar celdas Excel a Excel (ADO)
Con ADO podemos conectar con casi cualquier base de datos, incluyendo Excel mismo. En este ejemplo mostramos como conectar con 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.
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

RSS