En este post vamos a aprender Cómo crear una aplicación SQL Query Executor en MS Excel y VBA para consultar datos del libro de Excel?
Ninguna otra herramienta puede reemplazar el uso y la flexibilidad de SQL. La declaración SQL proporciona la salida de cualquier consulta simple o compleja muy rápidamente. No necesita hacer clic en ningún lugar ni seguir ningún paso para consultar los datos. Solo necesita escribir la consulta SQL y proporcionará el resultado en una fracción de segundos.
Imagínese, si podemos usar la declaración SQL para consultar los datos de Excel Workbook, ahorrará mucho tiempo y también, podemos ejecutar consultas complejas que serían prácticamente difíciles de procesar en Excel con funciones/pasos de consulta incorporados.
Con la ayuda de esta publicación, puede crear su aplicación de consulta personalizada en Excel para ejecutar la instrucción SQL para consultar datos de Excel Workbook. Puede usar el mismo código después de realizar algunos cambios menores (fuente de datos), si es necesario.

Comencemos a crear esta interesante aplicación desde cero.
Abra un nuevo libro de Excel y guarde el archivo con el nombre «SQL Query Executor» y la extensión debe ser .XLSM ya que vamos a escribir código VBA.
Si no selecciona .XLSM, Excel no conservará su código VBA una vez que cierre el archivo.

Ahora, vamos a cambiar el nombre de la hoja1 a Ejecutor de consultas.

Vaya a la pestaña Ver y desmarque la casilla de verificación Líneas de cuadrícula en el grupo Mostrar para ocultar las líneas de cuadrícula

Diseñe la interfaz de usuario en la hoja del ejecutor de consultas según la imagen de abajo.

Ahora, necesitamos escribir el código en Visual Basic de Application.
Para abrir la ventana de VBA, simplemente haga clic en la pestaña Desarrollador y luego haga clic en el botón VBA disponible en el Grupo de código. También puede presionar la tecla de acceso directo como Alt + F11 para abrir la ventana de VBA.

Ahora, puede ver que la ventana de la aplicación de Visual Basic está abierta.

Aquí, necesitamos insertar un módulo en blanco para escribir todos los procedimientos y funciones para manejar el proceso.
Hagamos clic en el menú Insertar y luego en Módulo. Agregará un módulo en blanco a este proyecto.

Antes de escribir el código, necesitamos agregar la referencia de Objeto de datos Microsoft ActiveX 6.1 Biblioteca para este proyecto. Esta biblioteca nos ayudará a ejecutar la consulta SQL.
Para agregar la referencia, simplemente haga clic en el menú Herramientas y luego haga clic en Referencia y seleccione Objeto de datos Microsoft ActiveX 6.1 de la referencia de bibliotecas disponibles.

Escribamos el código en el evento de clic del botón Examinar.
Private Sub cmdBrowse_Click() Dim txtFullPath ‘Muestra el cuadro de diálogo Abrir estándar y obtiene un nombre de archivo del usuario sin abrir realmente ningún archivo. txtFullPath = Application.GetOpenFilename( _ FileFilter:=»Archivos de Excel (*.xls; *.xlsx; *.xlsm), *.xls; *.xlsx; *.xlsm», _ Title:=»Seleccionar archivo de Excel») Si txtFullPath = False, salga de Sub txtWorkbookPath.Value = txtFullPath End Sub
Privado Sub cmdBrowse_Click() Oscuro txtFullPath ‘Muestra el cuadro de diálogo Abrir estándar y obtiene un nombre de archivo del usuario sin abrir ningún archivo. txtFullPath = Solicitud.Obtener nombre de archivo abierto( _ Filtro de archivo:=«Archivos de Excel (*.xls; *.xlsx; *.xlsm), *.xls; *.xlsx; *.xlsm», _ Título:=«Seleccionar archivo de Excel») Si txtFullPath = Falso Después Salida Sub txtWorkbookPath.Valor = txtFullPath Final Sub |
Escriba el siguiente código en el evento de doble clic de txtWorkbookPath
Private Sub txtWorkbookPath_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim txtFullPath ‘Muestra el cuadro de diálogo Abrir estándar y obtiene un nombre de archivo del usuario sin abrir ningún archivo. txtFullPath = Application.GetOpenFilename( _ FileFilter:=»Archivos de Excel (*.xls; *.xlsx; *.xlsm), *.xls; *.xlsx; *.xlsm», _ Title:=»Seleccionar archivo de Excel») Si txtFullPath = False, salga de Sub txtWorkbookPath.Value = txtFullPath End Sub
Privado Sub txtWorkbookPath_DblClick(PorVal Cancelar Como MSForms.RetornoBooleano) Oscuro txtFullPath ‘Muestra el cuadro de diálogo Abrir estándar y obtiene un nombre de archivo del usuario sin abrir ningún archivo. txtFullPath = Solicitud.Obtener nombre de archivo abierto( _ Filtro de archivo:=«Archivos de Excel (*.xls; *.xlsx; *.xlsm), *.xls; *.xlsx; *.xlsm», _ Título:=«Seleccionar archivo de Excel») Si txtFullPath = Falso Después Salida Sub txtWorkbookPath.Valor = txtFullPath Final Sub |
Escriba el siguiente código en el evento de clic de cmdReset
Private Sub cmdReset_Click() Dim iConfirmation As VbMsgBoxResult iconfimration = MsgBox(«¿Desea restablecer el Ejecutor de consultas?», vbYesNo + vbQuestion, «Confirmación») If iConfirmation = vbNo Entonces salga de Sub ‘Eliminación del resultado de la consulta anterior ThisWorkbook.Sheets(«Query Ejecutor»).Rows(«24:» & Rows.Count).Clear ThisWorkbook.Sheets(«Query Executor»).txtWorkbookPath.Value = «» ThisWorkbook.Sheets(«Query Executor»).txtSQLQuery.Value = «» MsgBox «Terminado» End Sub
Privado Sub cmdReset_Click() Oscuro iConfirmación Como VbMsgBoxResult iconofimración = MsjBox(«¿Quiere restablecer el ejecutor de consultas?», vbSíNo + vbPregunta, «Confirmación») Si iConfirmación = vb No Después Salida Sub ‘Eliminación del resultado de la consulta anterior Este libro de trabajo.Hojas(«Ejecutor de consultas»).Filas(«24:» &erio; Filas.Contar).Claro Este libro de trabajo.Hojas(«Ejecutor de consultas»).txtWorkbookPath.Valor = «» Este libro de trabajo.Hojas(«Ejecutor de consultas»).txtSQLQuery.Valor = «» MsjBox «Hecho» Final Sub |
Pasemos a la ventana Módulo y comencemos a escribir el código para ejecutar el código SQL.
Escriba el subprocedimiento en la ventana del Módulo.
Sub Run_SQL_Query() On Error GoTo err_handler Dim MyConnect As String Dim MyRecordset As ADODB.Recordset Dim MySQL As String ExcelFile = ThisWorkbook.Sheets(«Query Executor»).txtWorkbookPath.Value MySQL = ThisWorkbook.Sheets(«Query Executor»).txtSQLQuery .Value MyConnect = «Proveedor=Microsoft.ACE.OLEDB.12.0;» &erio; _ «Fuente de datos = » & Archivo de Excel & «;» &erio; _ «Propiedades extendidas = Excel 12.0» Establecer MyRecordset = Nuevo ADODB.Recordset MyRecordset.Open MySQL, MyConnect, adOpenStatic, adLockReadOnly For i = 0 To MyRecordset.Fields.Count – 1 With ThisWorkbook.Sheets(«Query Executor»).Cells( 24, i + 2) .Value = MyRecordset.Fields(i).Name .Interior.Color = RGB(117, 113, 113) .Font.Color = vbWhite End With Next ThisWorkbook.Sheets(«Query Executor»).Rango («B25»).CopyFromRecordset MyRecordset ThisWorkbook.Sheets(«Query Executor»).UsedRange.EntireColumn.AutoFit Exit Sub err_handler: MsgBox «¡Error!» & Err.Description With ThisWorkbook.Sheets(«Query Executor»).Range(«B25») .Value = «¡Error!» & Err.Description .Font.Color = vbRed End With End Sub
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 dieciséis 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | Sub Ejecutar_SQL_Query() En Error Ir err_handler
Oscuro Mi conexión Como Cuerda
Oscuro Mi conjunto de registros Como ADODB.conjunto de registros Oscuro mysql Como Cuerda Archivo Excel = Este libro de trabajo.Hojas(«Ejecutor de consultas»).txtWorkbookPath.Valor mysql = Este libro de trabajo.Hojas(«Ejecutor de consultas»).txtSQLQuery.Valor
Mi conexión = «Proveedor=Microsoft.ACE.OLEDB.12.0;» &erio; _ «Fuente de datos = « &erio; Archivo Excel &erio; «;» &erio; _ «Propiedades extendidas = Excel 12.0» Establecer Mi conjunto de registros = Nuevo ADODB.conjunto de registros Mi conjunto de registros.Abierto mysql, Mi conexión, adOpenStatic, adLockReadOnly Para i = 0 A Mi conjunto de registros.Campos.Contar – 1
Con Este libro de trabajo.Hojas(«Ejecutor de consultas»).Células(24, i + 2) .Valor = Mi conjunto de registros.Campos(i).Nombre .Interior.Color = RGB(117, 113, 113) .Fuente.Color = vbBlanco Final Con
próximo
Este libro de trabajo.Hojas(«Ejecutor de consultas»).Rango(«B25»).CopiarDeRecordset Mi conjunto de registros Este libro de trabajo.Hojas(«Ejecutor de consultas»).Rango utilizado.Toda la columna.Autoajustar Salida Sub err_handler: MsjBox «¡Error! « &erio; Errar.Descripción Con Este libro de trabajo.Hojas(«Ejecutor de consultas»).Rango(«B25») .Valor = «¡Error! « &erio; Errar.Descripción .Fuente.Color = vbRojo Final Con Final Sub |
Ahora, hemos terminado de escribir el procedimiento VBA para ejecutar el código SQL. Puede ejecutar la herramienta y ejecutar cualquier consulta SQL Select.
Por favor, mira el tutorial de YouTube.
Haga clic en el botón de abajo para descargar el archivo de muestra.
