Shell VBA

Ce tutoriel montrera comment utiliser la fonction VBA Shell.

Nous pouvons utiliser le VBA Coquille fonction pour appeler un programme exécutable séparé à partir d'un programme VBA. Par exemple, si nous devons ouvrir le Bloc-notes à partir d'Excel, nous pouvons utiliser la fonction VBA Shell pour le faire. Si l'appel Shell réussit, il renvoie la valeur Windows TaskID du programme qu'il a appelé. Si l'appel Shell échoue, il renvoie zéro.

Coquille a deux paramètres d'entrée : un requis chemin d'accès pour le programme à appeler, et une option style de fenêtre valeur contrôlant le style de la fenêtre où le programme s'exécutera. Les chemin d'accès La valeur peut inclure le chemin/répertoire et les arguments du programme.

Shell d'appel

Ce code peut faire partie d'une macro à exécuter Bloc-notes en utilisant le Appel VBA commande pour appeler le Coquille fonction.

1 Appelez Shell("notepad", vbNormalFocus)

Par exemple:

Shell attendre

Nous pouvons utiliser le VBA Attendre commande pour retarder l'appel du Coquille commande pendant une durée déterminée.

12 Application.Wait (Maintenant + TimeValue("00:00:05"))Appelez Shell("notepad", vbNormalFocus)

Par conséquent, 5 secondes s'écouleront avant que la commande Shell ne soit appelée.

Retour d'une erreur à partir de la fonction Shell

Si nous avons une erreur dans notre code lors de l'appel du Coquille fonction, et une erreur sera renvoyée et notre code passera en mode débogage.

Par exemple, dans cette macro, nous avons mal orthographié « bloc-notes ».

1 Appel Shell("bloc-notes", vbNormalFocus)

Le résultat de l'exécution de cette macro sera :

Programmation VBA | Le générateur de code fonctionne pour vous !

Ouvrir un fichier existant avec Shell

Si nous avons un fichier spécifique que nous souhaitons ouvrir avec le Coquille commande, nous pouvons inclure le nom du fichier dans notre code.

1 Appelez Shell ("Notepad.exe C:\demo\shell_test.txt", vbNormalFocus)

Si nous épelons le nom du fichier de manière incorrecte, le fichier ne sera pas trouvé et une boîte de message apparaîtra nous demandant si nous souhaitons créer un nouveau fichier.

Paramètres utilisés par la fonction Shell

Les Coquille La fonction a 2 paramètres - le nom du programme à appeler et le style de fenêtres que le programme va utiliser. Nous avons utilisé le vbNormalFocus dans les exemples ci-dessus, cela signifie que lorsque le programme (dans ce cas le Bloc-notes) est ouvert, il a le focus et il s'ouvre dans la position et la taille par défaut sur le PC.

Les Coquille propose cinq autres options :

vbMasquer Masque la fenêtre et définit le focus sur cette fenêtre

vbMinimizedFocus Affiche la fenêtre sous forme d'icône avec focus

vbMaximizedFocus Ouvre le programme dans une fenêtre agrandie avec focus

vbNormalNoFocus Restaure la fenêtre à sa position et à sa taille les plus récentes

vbMinimizedNoFocus Affiche la fenêtre sous forme d'icône et la fenêtre actuellement active reste active

Renvoi d'un ID de processus à partir de la commande Shell

Lorsque nous exécutons le Coquille Commande, elle renvoie un ID de processus ou de tâche. Nous pouvons stocker l'ID de processus dans une variable et utiliser cet ID de processus pour exécuter une autre commande - par exemple, le TaskKill commande pour fermer le fichier Bloc-notes.

123456 Sous TestPIDDim ProcessID en tant qu'entierprocessID = Shell("bloc-notes", vbNormalFocus)Appelez Shell("Taskkill /F /PID " + CStr(processID))MsgBox ("Notepad ProcessID = " + CStr(processID))Fin du sous-marin

Dans la première ligne, le Bloc-notes est ouvert et l'ID de processus se voit attribuer une valeur par Windows. Nous stockons cette valeur dans la variable ProcessID. Nous utilisons ensuite TaskKill pour forcer Notepad à fermer l'instance de NotePad que nous venons d'ouvrir. Les /F force de commutation Bloc-notes se terminer, et le /PID l'interrupteur dit TaskKill chercher le Bloc-notes ID de processus valeur. La fonction CStr convertit PID de processus au format de chaîne dont Shell et MsgBox sur la ligne suivante ont tous deux besoin.

Fatigué de rechercher des exemples de code VBA ? Essayez AutoMacro !

Programmation VBA | Le générateur de code fonctionne pour vous !

Appel d'autres programmes avec Shell

Shell ouvrira tout autre programme Windows. Par exemple, ce code appelle Exceller, et ouvre le fichier Excel 'example_workbook.xlsx' :

1 Appelez Shell("Excel ""C:\DEMO\example_workbook.xlsx""", vbNormalFocus)

Cela montre le fichier ouvert :

ShellExecute et ShellExecuteEx contre la commande Shell

L'espace de programmation Windows propose ShellExécuter et ShellExecuteEx fonctions qui appellent des programmes externes à partir du code logiciel. Par rapport à la fonction VBA Shell, ces fonctions Windows offrent plus de flexibilité, mais VBA ne les prend pas en charge et cet article ne les couvre donc pas.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave