Este tutorial demostrará cómo usar la función VBA Shell.
Podemos usar el VBA Cascarón función para llamar a un programa ejecutable separado desde dentro de un programa VBA. Por ejemplo, si necesitamos abrir el Bloc de notas desde Excel, podemos usar la función VBA Shell para hacerlo. Si la llamada de Shell tiene éxito, devuelve el valor de TaskID de Windows del programa al que llamó. Si la llamada de Shell falla, devuelve cero.
Cascarón tiene dos parámetros de entrada: un obligatorio nombre de ruta para que el programa llame, y un opcional estilo de ventana valor que controla el estilo de la ventana donde se ejecutará el programa. los nombre de ruta El valor puede incluir la ruta / directorio del programa y los argumentos.
Llamar a Shell
Este código puede formar parte de una macro para ejecutar Bloc usando el Llamada VBA comando para llamar al Cascarón función.
1 | Llamar a Shell ("bloc de notas", vbNormalFocus) |
Por ejemplo:
Shell espera
Podemos usar el VBA Esperar comando para retrasar la llamada al Cascarón comando durante un período de tiempo específico.
12 | Application.Wait (Now + TimeValue ("00:00:05"))Llamar a Shell ("bloc de notas", vbNormalFocus) |
Por lo tanto, pasarán 5 segundos antes de que se llame al comando Shell.
Devolver un error de la función Shell
Si tenemos un error en nuestro código al llamar al Cascarón función, y se devolverá el error y nuestro código entrará en modo de depuración.
Por ejemplo, en esta macro, hemos escrito "bloc de notas" incorrectamente.
1 | Llamar a Shell ("bloc de notas", vbNormalFocus) |
El resultado de ejecutar esta macro será:
Programación VBA | ¡Code Generator funciona para usted!
Abrir un archivo existente con Shell
Si tenemos un archivo específico que deseamos abrir con el Cascarón comando, podemos incluir el nombre del archivo en nuestro código.
1 | Llamar a Shell ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus) |
Si escribimos el nombre del archivo incorrectamente, el archivo no se encontrará y aparecerá un cuadro de mensaje preguntándonos si deseamos crear un nuevo archivo.
Parámetros usados por la función Shell
los Cascarón La función tiene 2 parámetros: el nombre del programa a llamar y el estilo de Windows que va a utilizar el programa. Hemos estado usando el vbNormalFocus en los ejemplos anteriores, lo que significa que cuando se abre el programa (en este caso, el Bloc de notas), tiene el foco y se abre en la posición y tamaño predeterminados en la PC.
los Cascarón ofrece otras cinco opciones:
vbHide Oculta la ventana y pone el foco en esa ventana
vbMinimizedFocus Muestra la ventana como un icono con foco.
vbMaximizedFocus Abre el programa en una ventana maximizada con foco
vbNormalNoFocus Restaura la ventana en su posición y tamaño más recientes
vbMinimizedNoFocus Muestra la ventana como un icono y la ventana actualmente activa permanece activa
Devolver un ID de proceso desde el comando Shell
Cuando ejecutamos el Cascarón Comando, devuelve un ID de proceso o tarea. Podemos almacenar el ID de proceso en una variable y usar ese ID de proceso para ejecutar otro comando, por ejemplo, el TaskKill comando para cerrar el archivo del Bloc de notas.
123456 | Sub TestPIDDim ProcessID como enteroprocessID = Shell ("bloc de notas", vbNormalFocus)Llamar a Shell ("Taskkill / F / PID" + CStr (processID))MsgBox ("Bloc de notas ProcessID =" + CStr (processID))End Sub |
En la primera línea, se abre el Bloc de notas y Windows asigna un valor al ID de proceso. Almacenamos este valor en la variable ProcessID. Luego usamos TaskKill para forzar al Bloc de notas a cerrar la instancia de Bloc de notas que acabamos de abrir. los /F cambiar fuerzas Bloc para terminar, y el / PID interruptor dice TaskKill buscar el Bloc de notas Identificacion de proceso valor. La función CStr convierte ProcessID al formato de cadena que Shell y MsgBox en la siguiente línea, ambos necesitan.
¿Cansado de buscar ejemplos de código VBA? ¡Prueba AutoMacro!
Programación VBA | ¡Code Generator funciona para usted!
Llamar a otros programas con Shell
Shell abrirá cualquier otro programa de Windows. Por ejemplo, este código llama Sobresaliry abre el archivo de Excel "example_workbook.xlsx":
1 | Llamar a Shell ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus) |
Esto muestra el archivo abierto:
ShellExecute y ShellExecuteEx frente al comando Shell
El espacio de programación de Windows ofrece ShellExecute y ShellExecuteEx funciones que llaman a programas externos desde el código de software. En comparación con la función VBA Shell, estas funciones de Windows ofrecen más flexibilidad, pero VBA no las admite y, por lo tanto, este artículo no las cubre.