Tämä opetusohjelma osoittaa, miten VBA Shell -toimintoa käytetään.
Voimme käyttää VBA: ta Kuori toiminto kutsuaksesi erillisen suoritettavan ohjelman VBA -ohjelman sisältä. Jos esimerkiksi meidän on avattava Notepad Excelistä, voimme käyttää sitä VBA Shell -toiminnolla. Jos Shell -puhelu onnistuu, se palauttaa kutsumansa ohjelman Windows TaskID -arvon. Jos Shell -puhelu epäonnistuu, se palauttaa nollan.
Kuori on kaksi syöttöparametria: a pakollinen polunimi ohjelman kutsua, ja valinnainen ikkunatyyli arvo ohjaa sen ikkunan tyyliä, jossa ohjelma suoritetaan. The polunimi arvo voi sisältää ohjelman polun / hakemiston ja argumentit.
Soita Shellille
Tämä koodi voi olla osa suoritettavaa makroa Muistio käyttämällä VBA -puhelu komento soittaa Kuori toiminto.
1 | Soita Shellille ("muistilehtiö", vbNormalFocus) |
Esimerkiksi:
Shell Odota
Voimme käyttää VBA: ta Odota komento viivyttää puhelun soittamista Kuori komento tietyn ajan.
12 | Application.Wait (Nyt + TimeValue ("00:00:05"))Soita Shellille ("muistilehtiö", vbNormalFocus) |
Siksi 5 sekuntia kuluu ennen Shell -komennon kutsumista.
Virheen palauttaminen Shell -toiminnosta
Jos koodissamme on virhe soitettaessa Kuori toiminto, ja virhe palautetaan ja koodimme siirtyy virheenkorjaustilaan.
Esimerkiksi tässä makrossa olemme kirjoittaneet "muistilevyn" väärin.
1 | Soita Shellille ("muistilehtiö", vbNormalFocus) |
Tämän makron suorittamisen tulos on:
VBA -ohjelmointi | Koodigeneraattori toimii sinulle!
Avaa olemassa oleva tiedosto Shellillä
Jos meillä on tietty tiedosto, jonka haluamme avata Kuori komento, voimme sisällyttää tiedoston nimen koodiin.
1 | Soita Shellille ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus) |
Jos kirjoitamme tiedoston nimen väärin, tiedostoa ei löydy ja näyttöön tulee viesti, jossa kysytään, haluammeko luoda uuden tiedoston.
Shell -toiminnon käyttämät parametrit
The Kuori funktiolla on kaksi parametria - kutsutun ohjelman nimi ja ohjelman käyttämä Windows -tyyli. Olemme käyttäneet vbNormaaliTarkennus yllä olevissa esimerkeissä, mikä tarkoittaa, että kun ohjelma (tässä tapauksessa Muistio) avataan, se keskittyy ja avautuu tietokoneen oletusasennossa ja -koko.
The Kuori tarjoaa viisi muuta vaihtoehtoa:
vbPiilota Piilottaa ikkunan ja keskittyy siihen
vbMinimoitu tarkennus Näyttää ikkunan kuvakkeena, jossa on tarkennus
vbMaximizedFocus Avaa ohjelman maksimoidussa ikkunassa keskittyen
vbNormaali Ei tarkennus Palauttaa ikkunan uusimpaan asentoonsa ja kokoon
vbMinimizedNoFocus Näyttää ikkunan kuvakkeena ja aktiivinen ikkuna pysyy aktiivisena
Prosessitunnuksen palauttaminen Shell -komennosta
Kun suoritamme Kuori Komento, se palauttaa prosessin tai tehtävän tunnuksen. Voimme tallentaa prosessitunnuksen muuttujaan ja käyttää tätä prosessitunnusta toisen komennon - esimerkiksi TaskKill komento sulkea Notepad -tiedosto.
123456 | AlitestiPIDDim ProcessID kokonaislukunaprocessID = Shell ("muistilehtiö", vbNormalFocus)Call Shell ("Taskkill /F /PID" + CStr (prosessitunnus))MsgBox ("Notepad ProcessID =" + CStr (prosessID))End Sub |
Ensimmäisellä rivillä NotePad avataan ja Windows antaa prosessitunnukselle arvon. Tallennamme tämän arvon ProcessID -muuttujaan. Pakotamme sitten TaskKillin pakottamaan Notepadin sulkemaan juuri avaamamme NotePad -ilmentymän. The /F vaihtaa voimia Muistio loppuun, ja /PID kytkin kertoo TaskKill etsimään Notepadia Prosessin tunnus arvo. CStr -toiminto muuntaa P: nrocessID merkkijonomuotoon, jota Shell ja MsgBox seuraavalla rivillä, molemmat tarvitsevat.
Oletko kyllästynyt etsimään esimerkkejä VBA -koodista? Kokeile AutoMacroa!
VBA -ohjelmointi | Koodigeneraattori toimii sinulle!
Soittaminen muihin ohjelmiin Shellin avulla
Shell avaa kaikki muut Windows -ohjelmat. Esimerkiksi tämä koodi kutsuu Excelja avaa Excel -tiedoston "example_workbook.xlsx":
1 | Soita Shellille ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus) |
Tämä näyttää avatun tiedoston:
ShellExecute ja ShellExecuteEx vs Shell -komento
Windowsin ohjelmointitila tarjoaa ShellToteuta ja ShellExecuteEx toiminnot, jotka kutsuvat ulkoisia ohjelmia ohjelmistokoodista. Verrattuna VBA Shell -toimintoon nämä Windows -toiminnot tarjoavat enemmän joustavuutta, mutta VBA ei tue niitä, joten tämä artikkeli ei kata niitä.