Ez az oktatóanyag bemutatja a VBA Shell funkció használatát.
Használhatjuk a VBA -t Héj funkció segítségével külön, futtatható programot hívhat meg a VBA programból. Például, ha meg kell nyitnunk a Jegyzettömböt az Excelből, használhatjuk a VBA Shell funkciót. Ha a Shell hívás sikeres, akkor visszaadja a meghívott program Windows TaskID értékét. Ha a Shell hívás sikertelen, akkor nullát ad vissza.
Héj két bemeneti paraméterrel rendelkezik: a kötelező útvonal a program hívásához, és opcionális ablakstílus a program futtatásának ablakának stílusát szabályozó érték. Az útvonal érték tartalmazhatja a program elérési útját / könyvtárát és argumentumait.
Hívja a Shell -t
Ez a kód egy futtatható makró része lehet Jegyzettömb segítségével VBA hívás parancsot hívni a Héj funkció.
1 | Call Shell ("jegyzettömb", vbNormalFocus) |
Például:
Shell Várj
Használhatjuk a VBA -t Várjon parancs a hívás késleltetésére Héj parancsot egy meghatározott ideig.
12 | Application.Wait (Most + TimeValue ("00:00:05"))Call Shell ("jegyzettömb", vbNormalFocus) |
Ezért a Shell parancs meghívása előtt 5 másodperc telik el.
Hiba visszaadása a Shell függvényből
Ha hibát találunk a kódunkban a Héj funkciót, és a hiba vissza fog térni, és a kódunk hibakeresési módba lép.
Például ebben a makróban helytelenül írtuk be a „jegyzetfüzetet”.
1 | Call Shell ("jegyzetfüzet", vbNormalFocus) |
A makró futtatásának eredménye a következő lesz:
VBA programozás | A kódgenerátor működik az Ön számára!
Nyisson meg egy meglévő fájlt a Shell segítségével
Ha van egy konkrét fájlunk, amelyet a Héj parancsot, akkor a fájl nevét is belefoglalhatjuk a kódunkba.
1 | A Shell hívása ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus) |
Ha helytelenül írjuk be a fájl nevét, a fájl nem található, és megjelenik egy üzenetmező, amely megkérdezi, hogy szeretnénk -e új fájlt létrehozni.
A Shell függvény által használt paraméterek
Az Héj A függvénynek két paramétere van - a meghívandó program neve és a program által használni kívánt Windows stílus. Mi már használtuk a vbNormalFocus a fenti példákban, ami azt jelenti, hogy a program (ebben az esetben a Jegyzettömb) megnyitásakor a fókusz van, és a számítógép alapértelmezett pozíciójában és méretében nyílik meg.
Az Héj további öt lehetőséget kínál:
vbElrejt Elrejti az ablakot, és az ablakra fókuszál
vbMinimizáltFókusz Fókuszban megjeleníti az ablakot ikonként
vbMaximizáltFókusz Fókuszban megnyitja a programot egy maximalizált ablakban
vbNormalNoFocus Visszaállítja az ablakot a legutóbbi pozíciójában és méretében
vbMinimizedNoFocus Az ablakot ikonként jeleníti meg, és az éppen aktív ablak aktív marad
Folyamatazonosító visszaadása a Shell parancsból
Amikor futtatjuk a Héj Parancs, visszaad egy folyamat vagy feladat azonosítót. Tárolhatjuk a folyamatazonosítót egy változóban, és használhatjuk ezt a folyamatazonosítót egy másik parancs - például a TaskKill parancsot a Jegyzettömb fájl bezárásához.
123456 | Sub TestPIDA ProcessID azonosítója egész számprocessID = Shell ("jegyzettömb", vbNormalFocus)Call Shell ("Taskkill /F /PID" + CStr (processID))MsgBox ("Notepad ProcessID =" + CStr (processID))End Sub |
Az első sorban a Jegyzettömb nyílik meg, és a folyamatazonosítót a Windows rendeli hozzá. Ezt az értéket a ProcessID változóban tároljuk. Ezután a TaskKill segítségével kényszerítjük a Jegyzettömböt, hogy zárja be az éppen megnyitott NotePad példányt. Az /F kapcsolóerők Jegyzettömb befejezni, és a /PID kapcsoló mondja TaskKill hogy megkeressem a Jegyzettömböt Folyamat azonosítója érték. A CStr függvény átalakítja a P -trocessID a Shell és a következő sor MsgBox karakterlánc -formátumára.
Unod már a VBA kódpéldák keresését? Próbálja ki az AutoMacro -t!
VBA programozás | A kódgenerátor működik az Ön számára!
Más programok hívása a Shell segítségével
A Shell bármely más Windows programot megnyit. Például ez a kód hív Excel, és megnyitja az "example_workbook.xlsx" Excel fájlt:
1 | Hívás Shell ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus) |
Ez a megnyitott fájlt mutatja:
ShellExecute és ShellExecuteEx vs Shell Command
A Windows programozási terület kínál ShellExecute és ShellExecuteEx funkciók, amelyek külső programokat hívnak meg a szoftverkódból. A VBA Shell funkcióhoz képest ezek a Windows -funkciók nagyobb rugalmasságot kínálnak, de a VBA nem támogatja őket, ezért ez a cikk nem terjed ki rájuk.