PROGRAMAR EN VBA MACROS PARA EXCEL: Conectar Excel con Excel Consulta SQL Rango Numeros con Datos Mismo Libro

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





El ejemplo de macro que se presenta a continuación permite consultar datos por un rango de números, es decir la macro busca en la base de datos los coincidentes con el rango de números que se solicita buscar y los muestra o presenta en la hoja de Excel.

La macro es unos de los vídeos pertenecientes a la saga denominada como conectar Excel con Excel - Sentencias SQL; es decir se realiza una conexión ADODB - OLEDB y se procede a consultar los datos con sentencias SQL, es decir se usa la codificación de VBA  asociada con sentencias SQL lo que permite una mayor rapidez en la búsqueda de datos, lo cual es muy útil para bases de datos grandes.

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.









Al descargar el ejemplos se podrá ver en el archivo de Excel, en la hoja1 una base de datos de unos 65.000 registros aproximadamente, también un Buscar que es el cual ejecuta la macro, el procedimiento procede a buscar en la base de datos mencionada todos los registros coincidentes entre un rango de números, el número inicial se ingresa en la celda I1 y el número final del rango en la celda K20.

La macro buscará los datos en la base de datos y los datos coincidentes los mostrará en la hoja2; para lograr lo mencionado, la macro crea una conexión ADODB - OLE DB, la cual permite utilizar sentencias SQL, sus siglas en ingles significan Structured Query Language o en Español Lenguaje de Consulta Estructurado.

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también

Conectar Excel con Word crear archivo e insertar datos


Conectar Excel con Access - Sentencias SQL

Como buscar datos en tres columnas con macros

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



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

En un primer momento se debe realizar la conexión ADODB con el mismo libro de Excel para ello se usa el siguiente código, estableciendo en el mismo código que la hoja tiene una cabecera con el nombre de la columnas, esto indica: HDR=Yes.

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=Yes;"""

Realizada la conexión al libro de Excel en este caso se hace la consulta a una base de datos que está en el mismo libro de Excel, posteriormente se agregará un ejemplo para consultar datos en otro libro de Excel, esta consulta se hace sin abrir el libro; realizada la conexión se crea la string de consulta siguiente:

sql = "SELECT * FROM [" & "Hoja1$" & "] WHERE ID >= " & a.Range("I1") & " AND ID <= " & a.Range("K1") & " ORDER BY ID ASC"

La anterior permite consultar los datos de todas la columnas de la tabla en este caso se toma como tabla la hoja1, dependiendo del criterio (Where) cuando el dato analizado sea mayor o igual al menores de los datos del rango de datos en el ejemplo la celda I1 y los datos coincidentes menores al rango final en este caso el número final esta en la celda K1.

Obtenidos los datos (recordset), estos se cargan en memoria, para posteriormente pegarlos en la hoja2 a partir de la fila 2, comienzan a grabar los datos.

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

El código anterior es el que permite pegar los datos guardados en memoria y que se obtuvieron al realizar la consulta, en la base de datos u hojas de Excel.

La codificación completa del ejemplo Conectar Excel con Excel Consulta Rango de Numeros con Datos en la Misma Hoja, se puede observar seguidamente y debajo de ello se podrá descargar el ejemplo el cual recomiendo para observar su codificació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")

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.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