„VBA Shell“

Ši pamoka parodys, kaip naudotis „VBA Shell“ funkcija.

Galime naudotis VBA „Shell“ funkcija iškviesti atskirą vykdomąją programą iš VBA programos. Pavyzdžiui, jei mums reikia atidaryti „Notepad“ iš „Excel“, tam galime naudoti funkciją „VBA Shell“. Jei „Shell“ skambutis pavyksta, jis grąžina iškviestos programos „Windows TaskID“ reikšmę. Jei „Shell“ skambutis nepavyksta, jis grąžina nulį.

„Shell“ turi du įvesties parametrus: a būtina kelio pavadinimas kad programa skambintų, ir neprivaloma lango stilius vertė, valdanti lango, kuriame bus vykdoma programa, stilių. The kelio pavadinimas reikšmė gali apimti programos kelią / katalogą ir argumentus.

Skambinkite „Shell“

Šis kodas gali būti vykdytinos makrokomandos dalis Užrašų knygelė naudojant VBA skambutis komandą paskambinti „Shell“ funkcija.

1 Skambinti „Shell“ („užrašų knygelė“, „vbNormalFocus“)

Pavyzdžiui:

„Shell“ palaukite

Galime naudotis VBA Laukti komandą atidėti skambinimą „Shell“ komandą tam tikrą laiką.

12 Application.Wait (Dabar + TimeValue ("00:00:05"))Skambinti „Shell“ („užrašų knygelė“, „vbNormalFocus“)

Todėl praeis 5 sekundės, kol bus iškviesta „Shell“ komanda.

Grąžina klaidą iš apvalkalo funkcijos

Jei skambindami kodą turime klaidą „Shell“ funkcija, ir klaida bus grąžinta, o mūsų kodas pereis į derinimo režimą.

Pavyzdžiui, šioje makrokomandoje neteisingai parašėme „užrašų knygelę“.

1 Skambinti „Shell“ („užrašų knygelė“, „vbNormalFocus“)

Šios makrokomandos vykdymo rezultatas bus toks:

VBA programavimas | Kodo generatorius jums tinka!

Atidarykite esamą failą naudodami „Shell“

Jei turime konkretų failą, kurį norime atidaryti naudodami „Shell“ komandą, mes galime įtraukti failo pavadinimą į savo kodą.

1 Skambinti „Shell“ („Notepad.exe C: \ demo \ shell_test.txt“, vbNormalFocus)

Jei neteisingai parašysime failo pavadinimą, failas nebus rastas ir pasirodys pranešimų laukelis, kuriame bus klausiama, ar norime sukurti naują failą.

„Shell“ funkcijos naudojami parametrai

The „Shell“ Funkcija turi 2 parametrus - iškviečiamos programos pavadinimą ir „Windows“ stilių, kurį programa ketina naudoti. Mes naudojome vbNormalFocus aukščiau pateiktuose pavyzdžiuose, o tai reiškia, kad atidarius programą (šiuo atveju „Notepad“), ji yra sufokusuota ir ji atsidaro numatytoje kompiuterio padėtyje ir dydyje.

The „Shell“ siūlo dar penkis variantus:

vbSlėpti Paslepia langą ir sutelkia dėmesį į tą langą

vbMinimizedFocus Langas rodomas kaip piktograma su fokusu

vbMaximizedFocus Atidaro programą maksimaliai padidintame lange

vbNormalNoFocus Atkuria lango naujausią padėtį ir dydį

vbMinimizedNoFocus Rodomas langas kaip piktograma, o šiuo metu aktyvus langas lieka aktyvus

Proceso ID grąžinimas iš apvalkalo komandos

Kai paleidžiame „Shell“ Komanda grąžina proceso arba užduoties ID. Mes galime išsaugoti proceso ID kintamajame ir naudoti šį proceso ID vykdydami kitą komandą, pavyzdžiui, TaskKill komandą, kad uždarytumėte „Notepad“ failą.

123456 Sub TestPIDUžtemdyti ProcessID kaip sveiką skaičiųprocessID = apvalkalas („bloknotas“, „vbNormalFocus“)Skambučių apvalkalas („Taskkill /F /PID“ + CStr (procesoID))„MsgBox“ („Notepad ProcessID =“ + CStr (processID))Pabaiga Sub

Pirmoje eilutėje atidaromas „NotePad“ ir „Windows“ priskiria proceso ID reikšmę. Šią vertę išsaugome „ProcessID“ kintamajame. Tada mes naudojame „TaskKill“, kad priverstume „Notepad“ uždaryti ką tik atidarytą „NotePad“ egzempliorių. The /F perjungti jėgas Užrašų knygelė baigti, ir /PID jungiklis sako TaskKill ieškoti užrašų knygelės Proceso ID vertės. Funkcija CStr konvertuoja ProcessID į eilutės formatą, kurio reikia „Shell“ ir „MsgBox“ kitoje eilutėje.

Pavargote ieškoti VBA kodo pavyzdžių? Išbandykite „AutoMacro“!

VBA programavimas | Kodo generatorius jums tinka!

Kitų programų skambinimas naudojant „Shell“

„Shell“ atidarys bet kurią kitą „Windows“ programą. Pavyzdžiui, šis kodas skambina „Excel“ir atidaro „Excel“ failą „example_workbook.xlsx“:

1 Skambinti „Shell“ („Excel“ „C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus)

Tai rodo atidarytą failą:

„ShellExecute“ ir „ShellExecuteEx“ prieš „Shell“ komandą

„Windows“ programavimo erdvė siūlo „ShellExecute“ ir „ShellExecuteEx“ funkcijas, kurios iškviečia išorines programas iš programinės įrangos kodo. Palyginti su „VBA Shell“ funkcija, šios „Windows“ funkcijos suteikia daugiau lankstumo, tačiau VBA jų nepalaiko, todėl šis straipsnis jų neapima.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave