.
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.
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);
}
}
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:
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.
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
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.
Finalmente liberamos la variables para que no consuman recursos, de memoria de la PC, con los siguientes códigos:
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
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
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
.
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