Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Conectar Excel con Excel Consulta SQL Rango Numeros con Datos Otro Libro


.

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.

  
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);
}
}

 

Al descargar el ejemplo se obtendrá un archivo comprimido .rar, el cual contiene el archivo con la macro el un libro de Excel que contiene la base de datos en donde buscará la macro los datos consultados en el libro con la macro, la única condición es que los archivos estén juntos no importando la ubicación en la PC o en que directorio se descompriman, mientas estén los dos archivos juntos.

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.

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

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

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

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