VBA Shell

Acest tutorial va arăta cum să utilizați funcția VBA Shell.

Putem folosi VBA Coajă funcție pentru a apela un program executabil separat din interiorul unui program VBA. De exemplu, dacă trebuie să deschidem Notepad din Excel, putem folosi funcția VBA Shell pentru a face acest lucru. Dacă apelul Shell reușește, acesta returnează valoarea Windows TaskID a programului pe care l-a apelat. Dacă apelul Shell eșuează, acesta returnează zero.

Coajă are doi parametri de intrare: un necesar calea pentru a apela programul și un opțional fereastra valoare controlând stilul ferestrei unde va rula programul. The calea valoarea poate include calea / directorul și argumentele programului.

Sunați la Shell

Acest cod poate face parte dintr-o macro de rulat Notepad prin utilizarea Apel VBA comanda pentru a apela Coajă funcţie.

1 Apelați Shell („Notepad”, vbNormalFocus)

De exemplu:

Shell Așteptați

Putem folosi VBA Aștepta comanda pentru a întârzia apelarea Coajă pentru o anumită perioadă de timp.

12 Application.Wait (Now + TimeValue ("00:00:05"))Apelați Shell („Notepad”, vbNormalFocus)

Prin urmare, vor trece 5 secunde înainte ca comanda Shell să fie apelată.

Revenirea unei erori din funcția Shell

Dacă avem o eroare în codul nostru la apelarea Coajă funcție, iar eroarea va fi returnată și codul nostru va intra în modul de depanare.

De exemplu, în această macrocomandă am scris greșit „blocnotes”.

1 Call Shell („bloc de note”, vbNormalFocus)

Rezultatul executării acestei macrocomenzi va fi:

Programare VBA | Generatorul de coduri funcționează pentru dvs.!

Deschideți un fișier existent cu Shell

Dacă avem un fișier specific pe care dorim să îl deschidem cu Coajă comanda, putem include numele fișierului în codul nostru.

1 Apelați Shell („Notepad.exe C: \ demo \ shell_test.txt”, vbNormalFocus)

Dacă scriem numele fișierului incorect, fișierul nu va fi găsit și va apărea o casetă de mesaj care ne va întreba dacă dorim să creăm un fișier nou.

Parametrii utilizați de funcția Shell

The Coajă funcția are 2 parametri - numele programului de apelat și stilul Windows pe care programul îl va folosi. Am folosit vbNormalFocus în exemplele de mai sus, ceea ce înseamnă că atunci când programul (în acest caz Notepad) este deschis, acesta are focalizarea și se deschide în poziția și dimensiunea implicită de pe computer.

The Coajă oferă alte cinci opțiuni:

ascunde Ascunde fereastra și setează focalizarea pe acea fereastră

vbMinimizedFocus Afișează fereastra ca o pictogramă cu focalizare

vbMaximizedFocus Deschide programul într-o fereastră maximizată cu focalizare

vbNormalNoFocus Restabilește fereastra la cea mai recentă poziție și dimensiune

vbMinimizedNoFocus Afișează fereastra ca o pictogramă și fereastra activă în prezent rămâne activă

Returnarea unui ID proces din Comanda Shell

Când rulăm Coajă Comandă, returnează un proces sau un ID de activitate. Putem stoca ID-ul procesului într-o variabilă și îl putem utiliza pentru executarea unei alte comenzi - de exemplu, TaskKill comanda pentru a închide fișierul Notepad.

123456 Sub TestPIDDim Proces ID ca număr întregprocessID = Shell („notepad”, vbNormalFocus)Apel Shell („Taskkill / F / PID” + CStr (processID))MsgBox ("Notepad ProcessID =" + CStr (processID))Sfârșitul Sub

În prima linie, NotePad este deschis și ID-ul procesului i se atribuie o valoare de către Windows. Stocăm această valoare în variabila ProcessID. Apoi folosim TaskKill pentru a forța Notepad să închidă instanța NotePad pe care tocmai am deschis-o. The / F comutați forțele Notepad să se termine, și / PID comutatorul spune TaskKill să caute Notepad-ul ID proces valoare. Funcția CStr convertește ProcessID la formatul de șir de care au nevoie Shell și MsgBox pe linia următoare.

V-ați săturat să căutați exemple de cod VBA? Încercați AutoMacro!

Programare VBA | Generatorul de coduri funcționează pentru dvs.!

Apelarea altor programe cu Shell

Shell va deschide orice alt program Windows. De exemplu, acest cod apelează excelași deschide fișierul Excel „example_workbook.xlsx”:

1 Apelați Shell ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus)

Aceasta arată fișierul deschis:

ShellExecute și ShellExecuteEx față de Shell Command

Spațiul de programare Windows oferă ShellExecute și ShellExecuteEx funcții care apelează programe externe din codul software. Comparativ cu funcția VBA Shell, aceste funcții Windows oferă mai multă flexibilitate, dar VBA nu le acceptă și, prin urmare, acest articol nu le acoperă.

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave