VBA lupina

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.

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave