Inicio » VBA-Ejemplos » Importar celdas Excel a Excel (ADO)

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