Ta vadnica bo pokazala, kako uporabljati funkcijo lupine VBA.
Lahko uporabimo VBA Shell funkcijo za klic ločenega izvedljivega programa znotraj programa VBA. Na primer, če moramo odpreti Beležnico iz Excela, lahko za to uporabimo funkcijo lupine VBA. Če je klic Shell uspešen, vrne vrednost Windows TaskID programa, ki ga je poklical. Če klic Shell ne uspe, vrne nič.
Shell ima dva vhodna parametra: zahtevan ime poti za klic programa in izbirno okenski slog vrednost, ki nadzoruje slog okna, v katerem se bo program izvajal. The ime poti vrednost lahko vključuje pot / imenik programa in argumente.
Pokliči Shell
Ta koda je lahko del makra za izvajanje Beležnica z uporabo VBA klic ukaz za klic Shell funkcijo.
1 | Call Shell ("beležnica", vbNormalFocus) |
Na primer:
Shell Wait
Lahko uporabimo VBA Počakaj ukaz za zakasnitev klica Shell ukaz za določeno časovno obdobje.
12 | Application.Wait (Zdaj + TimeValue ("00:00:05"))Call Shell ("beležnica", vbNormalFocus) |
Zato bo pred klicem ukaza Shell minilo 5 sekund.
Vrnitev napake iz lupinske funkcije
Če imamo pri klicu napako v kodi Shell funkcijo, napaka bo vrnjena in naša koda bo prešla v način za odpravljanje napak.
Na primer, v tem makru smo napačno napisali »notepad«.
1 | Call Shell ("notepad", vbNormalFocus) |
Rezultat izvajanja tega makra bo:
Programiranje VBA | Generator kod deluje za vas!
Odprite obstoječo datoteko z lupino
Če imamo posebno datoteko, ki jo želimo odpreti z datoteko Shell Ukaz lahko v kodo vključimo ime datoteke.
1 | Pokliči lupino ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus) |
Če ime datoteke napačno črkujemo, datoteke ne bomo našli in prikazalo se bo okno s sporočilom, ki nas vpraša, ali želimo ustvariti novo datoteko.
Parametri, ki jih uporablja funkcija Shell
The Shell funkcija ima 2 parametra - ime programa za klic in slog oken, ki jih bo program uporabil. Mi smo uporabljali vbNormalFocus v zgornjih primerih to pomeni, da ima program (v tem primeru Beležnico) fokus, ki se odpre v privzetem položaju in velikosti v računalniku.
The Shell ponuja še pet drugih možnosti:
vbHide Skrije okno in se osredotoči na to okno
vbMinimizedFocus Prikaže okno kot ikono s poudarkom
vbMaximizedFocus Odpre program v povečanem oknu s poudarkom
vbNormalNoFocus Obnovi okno v najnovejšem položaju in velikosti
vbMinimizedNoFocus Okno se prikaže kot ikona, trenutno aktivno okno pa ostane aktivno
Vrnitev ID -ja procesa iz ukaza Shell
Ko zaženemo Shell Ukaz vrne ID procesa ali naloge. ID procesa lahko shranimo v spremenljivko in ga uporabimo pri izvajanju drugega ukaza - na primer datoteke TaskKill ukaz, da zaprete datoteko Notepad.
123456 | Pod TestPIDZatemni ProcessID kot celo številoprocessID = Shell ("beležnica", vbNormalFocus)Klicna lupina ("Taskkill /F /PID" + CStr (processID))MsgBox ("NoteID ProcessID =" + CStr (processID))End Sub |
V prvi vrstici se odpre NotePad in sistemu Windows ID dodeli vrednost. To vrednost shranimo v spremenljivko ProcessID. Nato uporabimo TaskKill, da prisilimo Notepad, da zapre primerek NotePada, ki smo ga pravkar odprli. The /F preklopne sile Beležnica do konca in /PID stikalo pove TaskKill poiščite Beležnico ID procesa vrednost. Funkcija CStr pretvori ProcessID v format niza, ki ga potrebujeta Shell in MsgBox v naslednji vrstici.
Utrujen od iskanja primerov kode VBA? Preizkusite AutoMacro!
Programiranje VBA | Generator kod deluje za vas!
Klicanje drugih programov s programom Shell
Shell bo odprl kateri koli drug program Windows. Ta koda na primer kliče Excelin odpre Excelovo datoteko 'example_workbook.xlsx':
1 | Pokliči lupino ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus) |
To prikazuje odprto datoteko:
ShellExecute in ShellExecuteEx proti ukazu Shell
Programski prostor Windows ponuja ShellExecute in ShellExecuteEx funkcije, ki kličejo zunanje programe iz programske kode. V primerjavi s funkcijo VBA Shell te funkcije sistema Windows ponujajo večjo prilagodljivost, vendar jih VBA ne podpira, zato jih ta članek ne zajema.