VBA Shell

Šī apmācība parādīs, kā izmantot VBA Shell funkciju.

Mēs varam izmantot VBA Shell funkciju, lai izsauktu atsevišķu izpildāmu programmu no VBA programmas. Piemēram, ja mums ir jāatver Notepad no Excel, mēs to varam izmantot, izmantojot VBA Shell funkciju. Ja Shell zvans izdodas, tas atgriež tās izsauktās programmas Windows TaskID vērtību. Ja Shell zvans neizdodas, tas atgriež nulli.

Shell ir divi ievades parametri: obligāts ceļa vārds lai programma zvanītu, un pēc izvēles logu stils vērtība, kas kontrolē loga stilu, kurā programma darbosies. The ceļa vārds vērtība var ietvert programmas ceļu / direktoriju un argumentus.

Zvaniet Shell

Šis kods var būt daļa no izpildāmā makro Piezīmju grāmatiņa izmantojot VBA zvans komandu izsaukt Shell funkciju.

1 Zvanīt uz Shell ("piezīmju grāmatiņa", vbNormalFocus)

Piemēram:

Shell Pagaidiet

Mēs varam izmantot VBA Pagaidiet komanda aizkavēt zvanīšanu Shell komandu noteiktam laika periodam.

12 Application.Wait (Tagad + TimeValue ("00:00:05"))Zvanīt uz Shell ("piezīmju grāmatiņa", vbNormalFocus)

Tāpēc paies 5 sekundes, pirms tiks izsaukta Shell komanda.

Kļūdas atgriešana no apvalka funkcijas

Ja, zvanot uz kodu, mūsu kodā ir kļūda Shell funkcija, un kļūda tiks atgriezta, un mūsu kods nonāks atkļūdošanas režīmā.

Piemēram, šajā makro mēs esam nepareizi uzrakstījuši “piezīmju grāmatiņu”.

1 Zvanīt uz Shell ("piezīmju bloks", vbNormalFocus)

Šī makro palaišanas rezultāts būs šāds:

VBA programmēšana | Kodu ģenerators strādā jūsu labā!

Atveriet esošu failu, izmantojot čaulu

Ja mums ir īpašs fails, kuru vēlamies atvērt ar Shell komandu, mēs varam iekļaut faila nosaukumu savā kodā.

1 Zvanīt uz Shell ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus)

Ja faila nosaukumu uzrakstīsim nepareizi, fails netiks atrasts, un parādīsies ziņojuma lodziņš, kurā tiks jautāts, vai mēs vēlamies izveidot jaunu failu.

Funkcijas Shell izmantotie parametri

The Shell funkcijai ir 2 parametri - izsaucamās programmas nosaukums un programmas Windows izmantotais stils. Mēs esam izmantojuši vbNormalFocus iepriekš minētajos piemēros, kas nozīmē, ka, atverot programmu (šajā gadījumā Notepad), tā ir fokusēta un atveras datora noklusējuma pozīcijā un izmērā.

The Shell piedāvā vēl piecas iespējas:

vbSlēpt Slēpj logu un koncentrējas uz šo logu

vbMinimizedFocus Parāda logu kā ikonu ar fokusu

vbMaximizedFocus Atver programmu maksimizētā logā ar fokusu

vbNormalNoFocus Atjauno logu tā pēdējā stāvoklī un izmērā

vbMinimizedNoFocus Parāda logu kā ikonu, un pašlaik aktīvais logs paliek aktīvs

Atgriež procesa ID no apvalka komandas

Kad mēs palaižam Shell Komanda atgriež procesa vai uzdevuma ID. Mēs varam saglabāt procesa ID mainīgā un izmantot šo procesa ID, izpildot citu komandu, piemēram, TaskKill komandu, lai aizvērtu Notepad failu.

123456 Sub TestPIDAptumšojiet ProcessID kā veselu skaitliprocessID = apvalks ("piezīmju grāmatiņa", vbNormalFocus)Zvanu čaula ("Taskkill /F /PID" + CStr (processID))MsgBox ("Notepad ProcessID =" + CStr (processID))Beigu apakš

Pirmajā rindiņā tiek atvērts NotePad un Windows piešķir procesa ID vērtību. Mēs saglabājam šo vērtību mainīgajā ProcessID. Pēc tam mēs izmantojam TaskKill, lai piespiestu Notepad aizvērt tikko atvērto NotePad instanci. The /F pārslēgt spēkus Piezīmju grāmatiņa līdz beigām, un /PID slēdzis stāsta TaskKill lai meklētu piezīmju grāmatiņu Procesa ID vērtību. Funkcija CStr pārvērš ProcessID uz virknes formātu, kas nepieciešams Shell un MsgBox nākamajā rindā, abiem.

Vai esat noguris no VBA koda piemēru meklēšanas? Izmēģiniet AutoMacro!

VBA programmēšana | Kodu ģenerators strādā jūsu labā!

Citu programmu izsaukšana, izmantojot Shell

Shell atvērs jebkuru citu Windows programmu. Piemēram, šis kods izsauc Excelun atver Excel failu “example_workbook.xlsx”:

1 Zvanīt uz čaulu ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus)

Tas parāda atvērto failu:

ShellExecute un ShellExecuteEx pret Shell komandu

Windows programmēšanas telpa piedāvā ShellExecute un ShellExecuteEx funkcijas, kas izsauc ārējās programmas no programmatūras koda. Salīdzinot ar VBA Shell funkciju, šīs Windows funkcijas piedāvā lielāku elastību, taču VBA tās neatbalsta, un tāpēc šis raksts tās neaptver.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave