VBA ljuska

Ovaj će vodič pokazati kako se koristi VBA Shell funkcija.

Možemo koristiti VBA Ljuska funkcija za pozivanje zasebnog, izvršnog programa iz VBA programa. Na primjer, ako moramo otvoriti Notepad iz programa Excel, za to možemo upotrijebiti funkciju VBA Shell. Ako poziv Shell uspije, vraća vrijednost Windows TaskID programa koji je pozvao. Ako poziv Shell ne uspije, vraća nulu.

Ljuska ima dva ulazna parametra: obavezan ime putanje za pozivanje programa i izborno stil prozora vrijednost koja kontrolira stil prozora u kojem će se program pokrenuti. The ime putanje vrijednost može uključivati ​​put / direktorij programa i argumente.

Pozovite Shell

Ovaj kôd može biti dio makronaredbe za izvođenje Bilježnica pomoću VBA poziv naredba za pozivanje Ljuska funkcija.

1 Call Shell ("bilježnica", vbNormalFocus)

Na primjer:

Shell Wait

Možemo koristiti VBA Čekati naredba za odgodu poziva Ljuska naredbu za određeno vrijeme.

12 Application.Wait (Sada + TimeValue ("00:00:05"))Call Shell ("bilježnica", vbNormalFocus)

Stoga će prije pozivanja naredbe Shell proći 5 sekundi.

Vraćanje pogreške iz Shell funkcije

Ako imamo grešku u kodu prilikom pozivanja Ljuska funkciju, a greška će se vratiti i naš kôd će preći u način ispravljanja pogrešaka.

Na primjer, u ovoj makronaredbi pogrešno smo napisali “notepad”.

1 Call Shell ("bilježnica", vbNormalFocus)

Rezultat pokretanja ovog makroa bit će:

VBA programiranje | Generator koda radi za vas!

Otvorite postojeću datoteku s ljuskom

Ako imamo određenu datoteku koju želimo otvoriti s Ljuska naredbom, možemo unijeti naziv datoteke u naš kôd.

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

Ako naziv datoteke napišemo pogrešno, datoteka se neće pronaći i pojavit će se okvir s porukom koji nas pita želimo li stvoriti novu datoteku.

Parametri koje koristi funkcija Shell

The Ljuska funkcija ima 2 parametra - naziv programa za poziv i stil prozora koji će program koristiti. Mi smo koristili vbNormalFocus u gornjim primjerima to znači da kada se program (u ovom slučaju Notepad) otvori, ima fokus i otvara se u zadanom položaju i veličini na računalu.

The Ljuska nudi pet drugih mogućnosti:

vbHide Sakriva prozor i postavlja fokus na taj prozor

vbMinimizedFocus Prikazuje prozor kao ikonu s fokusom

vbMaximizedFocus Otvara program u povećanom prozoru s fokusom

vbNormalNoFocus Vraća prozor na najnoviji položaj i veličinu

vbMinimizedNoFocus Prikazuje prozor kao ikonu, a trenutno aktivni prozor ostaje aktivan

Vraćanje ID -a procesa iz naredbe Shell

Kad pokrenemo Ljuska Naredba, vraća ID procesa ili zadatka. ID procesa možemo pohraniti u varijablu i koristiti taj ID procesa u izvođenju druge naredbe - na primjer, TaskKill naredbu za zatvaranje datoteke Notepad.

123456 Sub TestPIDZatamnite ProcessID kao cijeli brojprocessID = Shell ("bilježnica", vbNormalFocus)Call Shell ("Taskkill /F /PID" + CStr (processID))MsgBox ("NoteID ProcessID =" + CStr (processID))Kraj podm

U prvom retku otvara se NotePad i Windows -u ID procesa dodjeljuje vrijednost. Tu vrijednost pohranjujemo u varijablu ProcessID. Zatim koristimo TaskKill da prisilimo Notepad da zatvori instancu NotePada koju smo upravo otvorili. The /F prekidačke sile Bilježnica do kraja i /PID switch kaže TaskKill potražiti Notepad ID procesa vrijednost. Funkcija CStr pretvara ProcessID u format niza koji Shell i MsgBox u sljedećem retku trebaju oboje.

Umorni ste od traženja primjera VBA koda? Isprobajte AutoMacro!

VBA programiranje | Generator koda radi za vas!

Pozivanje drugih programa s Shell -om

Shell će otvoriti bilo koji drugi Windows program. Na primjer, ovaj kôd poziva Exceli otvara Excel datoteku ‘example_workbook.xlsx’:

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

Ovo prikazuje otvorenu datoteku:

ShellExecute i ShellExecuteEx protiv naredbe Shell

Programski prostor Windows nudi ShellExecute i ShellExecuteEx funkcije koje pozivaju vanjske programe iz programskog koda. U usporedbi s funkcijom VBA Shell, ove Windows funkcije nude veću fleksibilnost, ali ih VBA ne podržava pa ih ovaj članak ne pokriva.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave