Shell VBA

Questo tutorial dimostrerà come utilizzare la funzione VBA Shell.

Possiamo usare il VBA Guscio funzione per chiamare un programma eseguibile separato dall'interno di un programma VBA. Ad esempio, se dobbiamo aprire Blocco note da Excel, possiamo utilizzare la funzione Shell VBA per farlo. Se la chiamata Shell riesce, restituisce il valore TaskID di Windows del programma chiamato. Se la chiamata Shell fallisce, restituisce zero.

Guscio ha due parametri di input: un obbligatorio percorso per il programma da chiamare, e un optional stile finestra valore che controlla lo stile della finestra in cui verrà eseguito il programma. Il percorso value può includere il percorso/directory del programma e gli argomenti.

Chiama Shell

Questo codice può far parte di una macro da eseguire Bloc notes usando il Chiamata VBA comando per chiamare il Guscio funzione.

1 Call Shell("blocco note", vbNormalFocus)

Per esempio:

Shell aspetta

Possiamo usare il VBA Aspettare comando per ritardare la chiamata Guscio comando per un determinato periodo di tempo.

12 Applicazione.Attendi (Ora + TimeValue("00:00:05"))Call Shell("blocco note", vbNormalFocus)

Quindi passeranno 5 secondi prima che venga chiamato il comando Shell.

Restituzione di un errore dalla funzione Shell

Se abbiamo un errore nel nostro codice quando chiamiamo il Guscio funzione e verrà restituito l'errore e il nostro codice entrerà in modalità debug.

Ad esempio, in questa macro, abbiamo scritto "blocco note" in modo errato.

1 Call Shell("blocco note", vbNormalFocus)

Il risultato dell'esecuzione di questa macro sarà:

Programmazione VBA | Il generatore di codice funziona per te!

Apri un file esistente con Shell

Se abbiamo un file specifico che desideriamo aprire con il Guscio comando, possiamo includere il nome del file nel nostro codice.

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

Se scriviamo il nome del file in modo errato, il file non verrà trovato e apparirà una finestra di messaggio che ci chiederà se desideriamo creare un nuovo file.

Parametri usati dalla funzione Shell

Il Guscio La funzione ha 2 parametri: il nome del programma da chiamare e lo stile di Windows che il programma utilizzerà. Abbiamo usato il vbNormalFocus negli esempi sopra il che significa che quando il programma (in questo caso Blocco note) viene aperto, ha il focus e si apre nella posizione e dimensione predefinite sul PC.

Il Guscio offre altre cinque opzioni:

vbNascondi Nasconde la finestra e imposta lo stato attivo su quella finestra

vbMinimizedFocus Visualizza la finestra come icona con lo stato attivo

vbMaximizedFocus Apre il programma in una finestra ingrandita con il focus

vbNormalNoFocus Ripristina la finestra nella posizione e nelle dimensioni più recenti

vbMinimizedNoFocus Visualizza la finestra come icona e la finestra attualmente attiva rimane attiva

Restituzione di un ID di processo dal comando Shell

Quando eseguiamo il Guscio Comando, restituisce un ID di processo o attività. Possiamo memorizzare l'ID processo in una variabile e utilizzare quell'ID processo nell'esecuzione di un altro comando, ad esempio il Task Kill comando per chiudere il file del Blocco note.

123456 Sottotest PIDDim ProcessID come interoIDprocesso = Shell("blocco note", vbNormalFocus)Call Shell("Taskkill /F /PID " + CStr(IDprocesso))MsgBox ("ID processo blocco note = " + CStr (ID processo))Fine sottotitolo

Nella prima riga viene aperto NotePad e Windows assegna un valore all'ID processo. Memorizziamo questo valore nella variabile ProcessID. Usiamo quindi TaskKill per forzare Blocco note a chiudere l'istanza di Blocco note che abbiamo appena aperto. Il /F cambiare le forze Bloc notes per finire, e il /PID l'interruttore dice Task Kill per cercare il Blocco note ID processo valore. La funzione CStr converte PIDprocesso al formato stringa che Shell e MsgBox nella riga successiva necessitano entrambi.

Stanco di cercare esempi di codice VBA? Prova AutoMacro!

Programmazione VBA | Il generatore di codice funziona per te!

Chiamare altri programmi con Shell

Shell aprirà qualsiasi altro programma Windows. Ad esempio, questo codice chiama Eccelleree apre il file Excel "example_workbook.xlsx":

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

Questo mostra il file aperto:

ShellExecute e ShellExecuteEx contro il comando Shell

Lo spazio di programmazione Windows offre ShellExecute e ShellExecuteEx funzioni che richiamano programmi esterni dal codice del software. Rispetto alla funzione VBA Shell, queste funzioni di Windows offrono maggiore flessibilità, ma VBA non le supporta e quindi questo articolo non le copre.

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave