Tento tutoriál předvede, jak používat funkci VBA Shell.
Můžeme použít VBA Shell Funkce pro volání samostatného spustitelného programu z programu VBA. Pokud například potřebujeme otevřít Poznámkový blok z Excelu, můžeme k tomu použít funkci VBA Shell. Pokud je volání Shell úspěšné, vrátí hodnotu Windows TaskID programu, který nazývá. Pokud volání Shell selže, vrátí nulu.
Shell má dva vstupní parametry: a povinný název cesty pro volání programu a volitelně okenní styl hodnota řídící styl okna, kde bude program spuštěn. The název cesty hodnota může zahrnovat cestu / adresář programu a argumenty.
Zavolejte Shell
Tento kód může být součástí makra ke spuštění poznámkový blok pomocí Volání VBA příkaz zavolat Shell funkce.
1 | Call Shell („poznámkový blok“, vbNormalFocus) |
Například:
Shell Počkej
Můžeme použít VBA Počkejte příkaz pro zpoždění volání Shell příkaz na určité časové období.
12 | Application.Wait (Now + TimeValue ("00:00:05"))Call Shell („poznámkový blok“, vbNormalFocus) |
Proto před vyvoláním příkazu Shell uplyne 5 sekund.
Vrácení chyby z funkce Shell
Pokud máme v kódu při volání chybu Shell funkce, a chyba bude vrácena a náš kód přejde do režimu ladění.
Například v tomto makru jsme špatně napsali „poznámkový blok“.
1 | Call Shell („poznámkový blok“, vbNormalFocus) |
Výsledkem spuštění tohoto makra bude:
Programování VBA | Generátor kódu pracuje pro vás!
Otevřete existující soubor pomocí prostředí
Pokud máme konkrétní soubor, který chceme otevřít pomocí Shell můžeme do našeho kódu zahrnout název souboru.
1 | Zavolejte Shell ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus) |
Pokud název souboru napíšeme nesprávně, soubor nebude nalezen a zobrazí se okno se zprávou s dotazem, zda si přejeme vytvořit nový soubor.
Parametry používané funkcí Shell
The Shell funkce má 2 parametry - název programu, který se má volat, a styl systému Windows, který bude program používat. Použili jsme vbNormalFocus v příkladech výše to znamená, že když je program (v tomto případě Poznámkový blok) otevřen, má fokus a otevře se ve výchozí poloze a velikosti na PC.
The Shell nabízí pět dalších možností:
vbHide Skryje okno a nastaví zaostření na toto okno
vbMinimizedFocus Zobrazí okno jako ikonu s fokusem
vbMaximizedFocus Otevře program v maximalizovaném okně se zaměřením
vbNormalNoFocus Obnoví okno v jeho nejnovější poloze a velikosti
vbMinimizedNoFocus Zobrazí okno jako ikonu a aktuálně aktivní okno zůstane aktivní
Vrácení ID procesu z příkazu Shell
Když spustíme Shell Command, vrátí ID procesu nebo úlohy. ID procesu můžeme uložit do proměnné a použít toto ID procesu ke spuštění jiného příkazu - například TaskKill zavřete soubor programu Poznámkový blok.
123456 | Dílčí testovací PIDDim ProcessID jako celé čísloprocessID = Shell ("poznámkový blok", vbNormalFocus)Call Shell („Taskkill /F /PID“ + CStr (processID))MsgBox ("Notepad ProcessID =" + CStr (processID))End Sub |
Na prvním řádku se otevře NotePad a Windows ID procesu přiřadí hodnotu. Tuto hodnotu uložíme do proměnné ProcessID. Poté pomocí TaskKill donutíme Poznámkový blok zavřít instanci NotePadu, kterou jsme právě otevřeli. The /F přepnout síly poznámkový blok do konce a /PID přepínač říká TaskKill hledat Poznámkový blok ID procesu hodnota. Funkce CStr převádí ProcessID na formát řetězce, který Shell, a MsgBox na dalším řádku, oba potřebují.
Už vás nebaví hledat příklady kódu VBA? Zkuste AutoMacro!
Programování VBA | Generátor kódu pracuje pro vás!
Volání dalších programů pomocí Shell
Shell otevře jakýkoli jiný program Windows. Tento kód například volá Vynikata otevře soubor aplikace Excel „example_workbook.xlsx“:
1 | Zavolejte Shell ("Excel" "C: \ DEMO \ example_workbook.xlsx" "" ", vbNormalFocus) |
Toto ukazuje otevřený soubor:
ShellExecute a ShellExecuteEx vs Shell Command
Programovací prostor Windows nabízí ShellExecute a ShellExecuteEx funkce, které ze softwarového kódu vyvolávají externí programy. Ve srovnání s funkcí VBA Shell nabízejí tyto funkce systému Windows větší flexibilitu, ale VBA je nepodporuje, a proto se na ně tento článek nevztahuje.