VBA Shell

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ä.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave