Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

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


.

Buscar datos en un rango de fechas con macro, algo que es fundamental para gente que trabaja arduamente con libros de Excel registrando todo tipo de datos cuyo elemento común en la mayoría es la fecha del registro.

Este ejemplo precisamente muestra lo mencionado, es decir Como Filtrar por un Rango de Fechas Estando la Base de Datos en Otro Libro de Excel distinto al cual estamos trabajando, utilizando una combinación de código VBA y SQL, suena difícil, pero no lo es tanto solo de debe poner atención a las explicaciones de este vídeo como el resto de la saga dedicado al tema, en el link encuentras el resto de vídeos relacionados con Conectar Excel con Excel Sentencias SQL anteriormente se vio el mismo ejemplo pero la base de datos se encontraba en el mismo libro de Excel sobre el que se encontraba la macro.

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.

Si te estás iniciando en la operación de Excel o requieres afirmar conocimientos, 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.

 

Descarga el ejemplo desde el link del final como primer medida para poder entender en forma simple y rápida la codificación contenida, que es explicada en este post y en el vídeo tutorial de nuestro canal de You Tube.

Es necesario para que la macro funcione, en primer lugar que se conecte al Libro Excel que contiene los datos a filtrar, esto se realiza con el siguiente código:

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;»»»

Posteriormente se debe crear la SQL para que consulte los datos en un rango de fecha, se debe establecer la fecha de inicio y de final para el filtrado de datos, en este ejemplo la fecha inicial y final de búsqueda se agregan en las celdas I1 y K1, el códigos es el siguiente:

sql = «SELECT * FROM [» & «Hoja1$» & «] WHERE Fecha >= #» & Format(CDate(a.Range(«I1»)), «mm/dd/yyyy») & «# AND Fecha <= #» & Format(CDate(a.Range(«K1»)), «mm/dd/yyyy») & «# ORDER BY fecha ASC»

El código anterior se puede leer como: Seleccione todas las columnas de la tabla Hoja1, cuando se cumpla la siguiente condición: que la fecha que está en la columna fecha sea mayor e igual a la fecha inserta en la celda I1, es decir para que el registro se filtre debe la fecha registrada debe ser mayor e igual a la fecha inicial; la otra condición es que la fecha registrada en la columna fecha debe ser menor o igual a la fecha final, en este ejemplo está en la celda K1.

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

Quizá sea de utilidad también

Como crear un menú que se desplaza a medida que se hace scroll

Como eliminar el botón X o cerrar de un formulario

Como copiar varias tablas vinculadas de Excel a Word

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

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

En forma posterior se ejecuta la SQL, los datos filtrados o Recorset se mantendrán en memoria hasta tanto sean usados y la memoria no se haya liberado, se usa el siguiente código:

Set rs = cn.Execute(sql)

Para pegar los datos filtrados en la hoja de Excel se usa:

b.Cells(2, 1).CopyFromRecordset Data:=rs

En este ejemplo los datos se pegan a partir de la celda A2.

Descarga el ejemplo como filtrar entre fecha y fecha con datos contenidos en otro libro utilizando SQL y VBA, lo podrás hacer desde el link del final, a continuación la codificación completa del 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 & «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 Fecha >= #» & Format(CDate(a.Range(«I1»)), «mm/dd/yyyy») & «# AND Fecha <= #» & Format(CDate(a.Range(«K1»)), «mm/dd/yyyy») & «# ORDER BY fecha 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

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