Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Conectar Excel con Excel Consulta SQL Copia Datos de Una Hoja a Otra de Distinto Libro


.

En este ejemplo se mostrará Como Conectar a Otro Libro de Excel Copiar los Datos de Una Hoja y Pegarlos en Una Hoja de Otro Libro con SQL, es decir la macro no utilizará código de VBA para copiar los datos de un libro a otro, anteriormente se vio lo mismo pero los datos de copiaban de una hoja a otra del mismo libro.

En resumen para copiar los datos de un libro a otro, la macro no abrirá el libro, sino que para ello se crea una Conexión ADODB, la cual permitirá enlazar con el otro libro de Excel que necesitemos, obteniendo los datos que se necesiten sin abrir el Libro de Excel.

Descarga el ejemplo en forma gratuita sin ninguna restricción, el código se puede adaptar a cada necesidad, Aporta por favor para sostener el sitio si está dentro de tus posibilidades, desde ya muchas gracias.

Se recomienda leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  
El vídeo verás la macro en acción con una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mail, trabajando con filas, celdas, columnas, rangos y muchos ejemplos más.


if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}



 
En primer lugar se debe descargar el ejemplo, desde el final del post se puede realizar en forma gratuita, el archivo comprimido contiene dos ficheros uno que es el que contiene la macro (extensión XLSM) y otro archivo XLSX que contiene los datos que se van a importar o copiar al fichero que contiene la macro, no interesa en que lugar de la PC se descompriman los archivos, mientras se guarden juntos, ello es, porque la macro busca en el directorio donde está el libro con la macro el otro archivo para importar los datos, ustedes pueden adaptar y dar la ruta necesaria del archivo que ustedes prefieran.

Como ya se vio en el ejemplo anterior, lo primero que se debe realizar es la conexión a la base de datos, que en este caso nos vamos a conectar a otro libro diferente del cual estamos trabajando, previamente cargamos en la variable mybook el libro del cual vamos a importar los datos; la conexión se realiza con el siguiente código:

mybook = ThisWorkbook.Path & «Conectar Excel con Excel Consulta SQL Base Datos.xlsx»
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0;» & «Data Source=» & mybook & «;Extended Properties=»»Excel 12.0;HDR=Yes;»»»

Luego se crea la cadena de texto o string de conexión de la siguiente forma, en este caso seleccionamos todas las columnas de la Hoja1 del libro del que se pretende importar datos.

sql = «SELECT * FROM [» & «Hoja1$» & «]»

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Quizá sea de utilidad también

Como determinar el color de una celda

Como enviar mail con archivo Excel y PDF mediante Outlook con Excel

Como hacer un link o hiperlink a google maps con Excel

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Luego se ejecuta la SQL guardando en el objeto rs (recorset) los datos obtenidos de la consulta realizada, en este caso son todos los datos de la Hoja1 del libro del que importamos los datos, que fue cargado en la variable mybook del ejemplo, luego de ello copiamos los datos del recorset a la hoja 2 del libro con la macro.

Set rs = cn.Execute(sql)
b.Cells(2, 1).CopyFromRecordset Data:=rs

Finalmente liberamos la variables para que no consuman recursos, de memoria de la PC, con los siguientes códigos:

Set rs = Nothing
cn.Close
Set cn = Nothing

El código completa del ejemplo Conectar Excel con Excel Consulta SQL Copia Datos de Una Hoja a Otra de Distinto Libro se muestra a continuación, mira el tutorial en vídeo para que sea más fácil entender el ejemplo.

Código que se inserta en un módulo

Sub ConsutaSQLExcel()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim ctl As Object
Dim cn As ADODB.Connection, rs As ADODB.Recordset, sql As String
On Error Resume Next
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
Set a = Sheets(«Hoja1»)
Set b = Sheets(«Hoja2»)

mybook = ThisWorkbook.Path & «Conectar Excel con Excel Consulta SQL Base Datos.xlsx»
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0;» & «Data Source=» & mybook & «;Extended Properties=»»Excel 12.0;HDR=Yes;»»»
sql = «SELECT * FROM [» & «Hoja1$» & «]»

b.Cells.Clear
a.Range(«A1:G1»).Copy Destination:=b.Range(«A1»)
Set rs = cn.Execute(sql)
b.Cells(2, 1).CopyFromRecordset Data:=rs
Set rs = Nothing
cn.Close
Set cn = Nothing
If b.Range(«A2») <> Empty Then
MsgBox («La base de datos de otro libro se copió con éxito»), vbInformation, «AVISO»
Else
MsgBox («No se encontraron registros en la base de datos del otro libro»), vbInformation, «AVISO»
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Sub BORRAR()
Sheets(«Hoja2»).Cells.Clear
End Sub

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends