VBA Shell

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.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave