Shell de VBA

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.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave