.
La macro anterior mostró como consultar cuyos datos estaban en el mismo libro, en este caso voy a mostrar como consultar datos que se encuentren en un rango de números cuya base de datos se encuentra en un Libro de Excel distinto.
El ejemplo es ideal para trabajar con base de datos grandes, porque para consultar los datos de Excel se usa SQL, gestionando una gran cantidad de datos en forma rápida, ustedes podrán observar en el la facilidad que tiene para poder manipular y consultar bases de datos u hojas de Excel extrayendo los datos en base a uno o varios criterio utilizando sentencias SQL asociadas con VBA..
Desde el final del post se puede descargar 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.
Recomiendo 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);
}
}
Al presionar el botón que buscar la macro ejecutará el procedimiento que tiene grabado, el mismo consiste en buscar los datos coincidentes en la base de datos del libro Excel que contiene la base de datos, dichos datos deberán coincidir con el criterio de ser mayor o igual al valor de la celda I1 y menor o igual al valor de la celda K1.
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también
Como pasar datos seleccionados en listbox multiselect a hoja de Excel
Como enviar mail con archivo Excel y PDF mediante Outlook con Excel
Como hacer un link o hiperlink a google maps con Excel
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Ejecutada la macro esta devolverá los valores coincidentes y se copiarán los datos en en la hoja 2 del libro que contiene la macro. Se debe mencionar que la macro no abre el libro de Excel copia y pega datos, sino que se conecta al otro libro y extrae los datos necesarios sin abrir el libro de Excel.
Para lograr lo mencionado se crea una conexión con el siguiente código:
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0;» & «Data Source=» & mybook & «;Extended Properties=»»Excel 12.0;HDR=Yes;»»»
Luego se crea el string de consulta, es decir la sentencia SQL que se ejecutará para extraer los datos, dicha sentencia establece que columnas seleccionar para buscar, de que tabla, cuales son los criterios para extraer los datos, se que sean ordenados de tal o cual forma, el código para este ejemplo es el siguiente, recuerden que la SQL variará de acuerdo al número de columnas, datos que se solicitan, criterios, etc. etc..
sql = «SELECT * FROM [» & «Hoja1$» & «] WHERE ID >= » & a.Range(«I1″) & » AND ID <= » & a.Range(«K1″) & » ORDER BY ID ASC»
Recuerden que al ejecutar la macro los datos obtenidos se mantienen en memoria luego se debe crear una código de VBA para grabarlos o pegarlos en la hoja 2 del libro que contiene la macro, el primer código ejecuta la sql, es decir procede a consultar los datos en la base de datos y el segundo código pega los datos obtenidos y que están en memoria de la PC en la celda A2, siendo la primer celda donde empezará a pegar los datos obtenidos.
El código completo se expone a continuación, recuerda que la macro denominada Como Conectar Excel con Excel Consulta SQL Rango Números con Datos en Otro Libro Excel, podrás descargarla desde el final de pos en forma gratis, si ya tienes conocimientos más avanzados puedes copiar y pegar el código que está a continuación.
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 & «414 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$» & «] WHERE ID >= » & a.Range(«I1″) & » AND ID <= » & a.Range(«K1″) & » ORDER BY ID ASC»
b.Cells.Clear
a.Range(«A1:G1»).Copy Destination:=b.Range(«A1»)
Set rs = cn.Execute(sql)
b.Cells(2, 1).CopyFromRecordset Data:=rs
b.Range(«B:B»).NumberFormat = «dd/mm/yyyy»
Set rs = Nothing
cn.Close
Set cn = Nothing
If b.Range(«A2») <> Empty Then
MsgBox («La busqueda se realizó con éxito»), vbInformation, «AVISO»
Else
MsgBox («No se encontraron registros para el criterio de búsqueda»), vbInformation, «AVISO»
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
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 & «414 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$» & «] WHERE ID >= » & a.Range(«I1″) & » AND ID <= » & a.Range(«K1″) & » ORDER BY ID ASC»
b.Cells.Clear
a.Range(«A1:G1»).Copy Destination:=b.Range(«A1»)
Set rs = cn.Execute(sql)
b.Cells(2, 1).CopyFromRecordset Data:=rs
b.Range(«B:B»).NumberFormat = «dd/mm/yyyy»
Set rs = Nothing
cn.Close
Set cn = Nothing
If b.Range(«A2») <> Empty Then
MsgBox («La busqueda se realizó con éxito»), vbInformation, «AVISO»
Else
MsgBox («No se encontraron registros para el criterio de búsqueda»), vbInformation, «AVISO»
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
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