.
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.
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);
}
}
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:
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
⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
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
.
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