VBA Shell

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.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave