VBA škrupina

Tento tutoriál vám ukáže, ako používať funkciu VBA Shell.

Môžeme použiť VBA Škrupina funkcia na vyvolanie samostatného spustiteľného programu z programu VBA. Ak napríklad potrebujeme otvoriť Poznámkový blok z Excelu, môžeme na to použiť funkciu VBA Shell. Ak je volanie Shell úspešné, vráti hodnotu TaskID systému Windows programu, ktorý volalo. Ak hovor Shell zlyhá, vráti nulu.

Škrupina má dva vstupné parametre: a povinný názov cesty na zavolanie programu a voliteľné štýl okna hodnota ovládajúca štýl okna, v ktorom bude program spustený. The názov cesty hodnota môže zahŕňať cestu / adresár programu a argumenty.

Zavolajte Shell

Tento kód môže byť súčasťou makra na spustenie Poznámkový blok pomocou Výzva VBA príkaz zavolať Škrupina funkciu.

1 Call Shell („poznámkový blok“, vbNormalFocus)

Napríklad:

Shell Počkaj

Môžeme použiť VBA Počkaj príkaz na oneskorenie volania na Škrupina príkaz na konkrétne časové obdobie.

12 Application.Wait (Now + TimeValue ("00:00:05"))Call Shell („poznámkový blok“, vbNormalFocus)

Preto pred vyvolaním príkazu Shell uplynie 5 sekúnd.

Vrátenie chyby z funkcie Shell

Ak máme v kóde chybu pri volaní na Škrupina funkciu, a chyba sa vráti a náš kód prejde do režimu ladenia.

Napríklad v tomto makre sme nesprávne napísali „poznámkový blok“.

1 Call Shell („poznámkový blok“, vbNormalFocus)

Výsledkom spustenia tohto makra bude:

Programovanie VBA | Generátor kódu pracuje za vás!

Otvorte existujúci súbor pomocou programu Shell

Ak máme konkrétny súbor, ktorý chceme otvoriť pomocou súboru Škrupina môžeme do nášho kódu zahrnúť názov súboru.

1 Zavolajte Shell ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus)

Ak nesprávne napíšeme názov súboru, súbor sa nenájde a zobrazí sa hlásenie s otázkou, či si prajeme vytvoriť nový súbor.

Parametre používané funkciou Shell

The Škrupina funkcia má 2 parametre - názov programu, ktorý sa má volať, a štýl systému Windows, ktorý program použije. Používame vbNormalFocus vo vyššie uvedených príkladoch to znamená, že keď sa program (v tomto prípade Poznámkový blok) otvorí, zaostrí a otvorí sa v predvolenej polohe a veľkosti v počítači.

The Škrupina ponúka päť ďalších možností:

vbHide Skryje okno a nastaví zameranie na toto okno

vbMinimizedFocus Zobrazí okno ako ikonu so zameraním

vbMaximizedFocus Program sa otvorí v maximalizovanom okne so zameraním

vbNormalNoFocus Obnoví okno v najnovšej polohe a veľkosti

vbMinimizedNoFocus Zobrazí okno ako ikonu a aktuálne aktívne okno zostane aktívne

Vrátenie ID procesu z príkazu Shell

Keď spustíme Škrupina Príkaz vráti ID procesu alebo úlohy. ID procesu môžeme uložiť do premennej a použiť ho pri spustení iného príkazu - napríklad TaskKill príkaz na zatvorenie súboru programu Poznámkový blok.

123456 Vedľajší testPIDDim ProcessID ako celé čísloprocessID = Shell ("poznámkový blok", vbNormalFocus)Call Shell („Taskkill /F /PID“ + CStr (processID))MsgBox ("Notepad ProcessID =" + CStr (processID))Koniec pod

V prvom riadku sa otvorí program NotePad a systému Windows sa ID procesu priradí hodnota. Túto hodnotu uložíme do premennej ProcessID. Potom pomocou TaskKill prinútime Poznámkový blok zavrieť inštanciu programu NotePad, ktorú sme práve otvorili. The /F prepínať sily Poznámkový blok do konca a /PID prepínač hovorí TaskKill hľadať poznámkový blok ID procesu hodnotu. Funkcia CStr prevádza ProcessID na formát reťazca, ktorý potrebujú Shell, a MsgBox na nasledujúcom riadku.

Ste unavení z hľadania príkladov kódu VBA? Skúste AutoMacro!

Programovanie VBA | Generátor kódu pracuje za vás!

Vyvolávanie ďalších programov pomocou programu Shell

Shell otvorí akýkoľvek iný program Windows. Tento kód napríklad volá Excela otvorí súbor programu Excel „example_workbook.xlsx“:

1 Zavolajte Shell ("Excel" "C: \ DEMO \ example_workbook.xlsx" "" ", vbNormalFocus)

Toto ukazuje otvorený súbor:

ShellExecute a ShellExecuteEx vs Shell Command

Programovací priestor Windows ponúka ShellExecute a ShellExecuteEx funkcie, ktoré zo softvérového kódu volajú externé programy. V porovnaní s funkciou VBA Shell ponúkajú tieto funkcie systému Windows väčšiu flexibilitu, ale VBA ich nepodporuje, a preto sa ich tento článok netýka.

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave