See õpetus näitab, kuidas VBA Shelli funktsiooni kasutada.
Saame kasutada VBA -d Kest funktsioon, et kutsuda eraldi käivitatav programm VBA programmi seest. Näiteks kui meil on vaja Notepad Excelist avada, saame selleks kasutada funktsiooni VBA Shell. Kui Shelli kõne õnnestub, tagastab see selle programmi Windowsi TaskID väärtuse, mida ta kutsus. Kui Shelli kõne ebaõnnestub, tagastab see nulli.
Kest sellel on kaks sisendparameetrit: a nõutav tee nimi programmi helistamiseks ja valikuline akna stiil väärtus, mis kontrollib programmi käivitamise akna stiili. The tee nimi väärtus võib sisaldada programmi teed / kataloogi ja argumente.
Helistage Shellile
See kood võib olla käivitatava makro osa Märkmik kasutades VBA kõne käsk helistada Kest funktsiooni.
1 | Helista Shellile ("märkmik", vbNormalFocus) |
Näiteks:
Shell Oota
Saame kasutada VBA -d Oota käsku helistada Kest käsku teatud aja jooksul.
12 | Application.Wait (Now + TimeValue ("00:00:05"))Helista Shellile ("märkmik", vbNormalFocus) |
Seetõttu möödub enne Shelli käsu kutsumist 5 sekundit.
Vea tagastamine kesta funktsioonist
Kui meil on koodis helistamisel viga Kest funktsiooni ja viga tagastatakse ning meie kood läheb silumisrežiimi.
Näiteks selles makros oleme märkuspaberi valesti kirjutanud.
1 | Helista Shellile ("märkmik", vbNormalFocus) |
Selle makro käitamise tulemus on järgmine:
VBA programmeerimine | Koodigeneraator töötab teie jaoks!
Avage Shelliga olemasolev fail
Kui meil on konkreetne fail, mida soovime avada Kest käsu, saame lisada faili koodi oma koodi.
1 | Helista Shellile ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus) |
Kui kirjutame faili nime valesti, siis faili ei leita ja kuvatakse teade, kus küsitakse, kas soovime uue faili luua.
Funktsiooni Shell kasutatavad parameetrid
The Kest funktsioonil on 2 parameetrit - kutsutava programmi nimi ja Windowsi stiil, mida programm kasutab. Oleme kasutanud vbNormalFocus ülaltoodud näidetes, mis tähendab, et kui programm (antud juhul Notepad) avatakse, on sellel fookus ja see avaneb arvuti vaikeasendis ja suuruses.
The Kest pakub veel viit võimalust:
vbPeida Peidab akna ja keskendub sellele aknale
vbMinimeeritud fookus Kuvab akna fookusega ikoonina
vbMaksimeeritud fookus Avab programmi maksimeeritud aknas fookusega
vbNormalNoFocus Taastab akna viimase asukoha ja suuruse
vbMinimeeritudNoFocus Kuvab akna ikoonina ja parajasti aktiivne aken jääb aktiivseks
Protsessi ID tagastamine Shelli käsust
Kui me käivitame Kest Käsk, see tagastab protsessi või ülesande ID. Me võime salvestada protsessi ID muutujale ja kasutada seda protsessi ID -d mõne muu käsu - näiteks TaskKill käsk Notepad -faili sulgemiseks.
123456 | Alam TestPIDHämardage protsessi ID täisarvunaprocessID = kest ("märkmik", vbNormalFocus)Helista Shellile ("Taskkill /F /PID" + CStr (protsessiID))MsgBox ("Notepad ProcessID =" + CStr (protsessiID))End Sub |
Esimesel real avatakse NotePad ja Windows määrab protsessi ID -le väärtuse. Salvestame selle väärtuse muutujat ProcessID. Seejärel kasutame TaskKilli, et sundida Notepad äsja avatud NotePadi eksemplar sulgema. The /F lülitage jõud Märkmik lõpetada ja /PID lüliti ütleb TaskKill märkmikku otsima Protsessi ID väärtus. Funktsioon CStr teisendab ProcessID stringivormingusse, mida Shell ja MsgBox järgmisel real vajavad.
Kas olete väsinud VBA koodinäidete otsimisest? Proovige AutoMacrot!
VBA programmeerimine | Koodigeneraator töötab teie jaoks!
Teiste programmide helistamine Shelli abil
Shell avab mis tahes muu Windowsi programmi. Näiteks see kood kutsub Excelja avab Exceli faili "example_workbook.xlsx":
1 | Helista Shellile ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus) |
See näitab avatud faili:
ShellExecute ja ShellExecuteEx vs Shelli käsk
Windowsi programmeerimisruum pakub ShellExecute ja ShellExecuteEx funktsioonid, mis kutsuvad tarkvarakoodist väliseid programme. Võrreldes VBA Shelli funktsiooniga pakuvad need Windowsi funktsioonid suuremat paindlikkust, kuid VBA ei toeta neid ja seetõttu ei hõlma käesolev artikkel neid.