Uso de ListBox – ejecutar opciones del Panel de Control con macros en Excel
En este artículo les presento un desarrollo en el cual podemos ejecutar algunas opciones del Panel de Control de Windows mediante un formulario de Excel, con macros.
Tenemos una lista de opciones las cuales podemos ejecutar mediante macros. Esta lista deberá llenar un ListBox insertado en un Formulario.
Figura 1. Formulario con ListBox.
Ver el video
Ver el video en Youtube: https://www.youtube.com/watch?v=l4QMpCHP18s
[youtube https://www.youtube.com/watch?v=l4QMpCHP18s]
Cómo ejecutamos el Panel de Control con macros en Excel
Lo primero que debemos hacer es declarar la función ShellExecute que nos permitirá ejecutar componentes de Windows. La debemos declarar tanto para Windows de 32 bits como para Windows de 64 bits. El siguiente código debe ir en un Módulo normal.
Visita: Hacer macros compatibles con Excel de 32 y 64 bits
#If VBA7 And Win64 Then Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr #Else Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long #End If
En el mismo Módulo donde declaramos la funcion ShellExecute vamos a crear una Subrutina con parámetros para poder usar la función. La Sub se llamará Ejecutar y tendrá como parámetros Nombre y Tipo. Nombre será el archivo .CPL que ejecutará el Panel de Control y Nombre será el tipo de opción que ejecutará.
Sub Ejecutar(Nombre As String, Tipo As String) ShellExecute 0, "Open", Nombre, Tipo, "", 1 End Sub
El Formulario tendrá un ListBox para llenarlo con la tabla de opciones, dos TextBox para los encabezados, un botón Ejecutar y un botón Cerrar.
Figura 2. Formulario de Excel.
El siguiente código vba permitirá poder manejar las propiedades del ListBox y poder ejecutar la opción elegida.
'--------------------------------------------------------------------------------------- ' Module : UserForm1 ' Author : MVP, Sergio Alejandro Campos ' Date : 08/02/2016 ' Purpose : Ejecutar Panel de Control de Windows '--------------------------------------------------------------------------------------- ' Option Explicit ' Private Sub CommandButton1_Click() 'Ejecutar dependiendo la opción elegida del ListBox Dim Cuenta As Integer Dim i As Integer ' Cuenta = Me.ListBox1.ListCount ' For i = 0 To Cuenta - 1 If Me.ListBox1.Selected(i) = True Then Ejecutar "Control.exe", Me.ListBox1.List(i) End If Next i ' End Sub ' Private Sub CommandButton2_Click() Unload Me End Sub ' Private Sub UserForm_Initialize() 'Trabajamos con las opciones del ListBox With Me .ListBox1.RowSource = "Lista" .ListBox1.BoundColumn = 2 .ListBox1.ColumnCount = 2 .ListBox1.ColumnWidths = "80 pt;30 pt" End With End Sub
En la siguiente animación vemos el formulario en acción y el despliegue de las opciones del Panel de Control.
Figura 3. Ejecutar opciones del Panel de Control con macros en Excel.
Descarga el archivo de ejemplo
Para probar las macros de este artículo de clic en Ejecutar Panel de Control. Se abrirá la página de descargas donde deberás elegir el archivo.