VBA skal

Denna handledning visar hur du använder VBA Shell -funktionen.

Vi kan använda VBA Skal funktion för att anropa ett separat, körbart program inifrån ett VBA -program. Om vi ​​till exempel behöver öppna Notepad från Excel kan vi använda VBA Shell -funktionen för att göra det. Om Shell -anropet lyckas returnerar det Windows TaskID -värdet för det program det kallade. Om Shell -anropet misslyckas returnerar det noll.

Skal har två ingångsparametrar: en obligatorisk sökvägsnamn för att programmet ska ringa, och valfritt fönsterstil värde som styr stilen i fönstret där programmet ska köras. De sökvägsnamn värde kan inkludera programmets sökväg / katalog och argument.

Ring Shell

Denna kod kan utgöra en del av ett makro som ska köras Anteckningsblock med hjälp av VBA -samtal kommando för att ringa Skal fungera.

1 Call Shell ("anteckningsblock", vbNormalFocus)

Till exempel:

Skal vänta

Vi kan använda VBA Vänta kommando för att fördröja samtalet till Skal kommando för en viss tidsperiod.

12 Application.Wait (Now + TimeValue ("00:00:05"))Call Shell ("anteckningsblock", vbNormalFocus)

Därför kommer 5 sekunder att passera innan Shell -kommandot anropas.

Returnerar ett fel från skalfunktionen

Om vi ​​har ett fel i vår kod när vi ringer Skal funktion, och fel kommer att returneras och vår kod kommer att gå till felsökningsläge.

Till exempel har vi i detta makro stavat "anteckningsblock" felaktigt.

1 Call Shell ("anteckningsblock", vbNormalFocus)

Resultatet av att köra detta makro blir:

VBA -programmering | Kodgenerator fungerar för dig!

Öppna en befintlig fil med skal

Om vi ​​har en specifik fil som vi vill öppna med Skal kommando kan vi inkludera filnamnet i vår kod.

1 Call Shell ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus)

Om vi ​​stavar filnamnet fel, kommer filen inte att hittas och en meddelanderuta visas som frågar oss om vi vill skapa en ny fil.

Parametrar som används av Shell -funktionen

De Skal funktionen har två parametrar - namnet på det program som ska ringas och den Windows -stil som programmet ska använda. Vi har använt vbNormalFocus i exemplen ovan vilket innebär att när programmet (i det här fallet Notepad) öppnas har det fokus och det öppnas i standardpositionen och storleken på datorn.

De Skal erbjuder fem andra alternativ:

vbHide Döljer fönstret och ställer fokus på det fönstret

vbMinimizedFocus Visar fönstret som en ikon med fokus

vbMaximizedFocus Öppnar programmet i ett maximerat fönster med fokus

vbNormalNoFocus Återställer fönstret vid sin senaste position och storlek

vbMinimizedNoFocus Visar fönstret som en ikon och fönstret som för närvarande är aktivt förblir aktivt

Returnera ett process -ID från Shell -kommandot

När vi kör Skal Kommando, det returnerar ett process- eller uppgifts -ID. Vi kan lagra process -ID i en variabel och använda det process -ID: t för att köra ett annat kommando - till exempel TaskKill kommando för att stänga anteckningsfilen.

123456 Sub TestPIDDim ProcessID som heltalprocessID = Shell ("anteckningsblock", vbNormalFocus)Call Shell ("Taskkill /F /PID" + CStr (processID))MsgBox ("Anteckningar ProcessID =" + CStr (processID))Avsluta Sub

På den första raden öppnas NotePad och Process -ID tilldelas ett värde av Windows. Vi lagrar detta värde i ProcessID -variabeln. Vi använder sedan TaskKill för att tvinga Notepad att stänga instansen av NotePad som vi just har öppnat. De /F växla krafter Anteckningsblock att avsluta, och /PID växeln berättar TaskKill att leta efter anteckningsblocket Process -ID värde. CStr -funktionen konverterar ProcessID till det strängformat som Shell och MsgBox på nästa rad behöver båda.

Trött på att söka efter exempel på VBA -kod? Prova AutoMacro!

VBA -programmering | Kodgenerator fungerar för dig!

Ringa andra program med Shell

Shell öppnar alla andra Windows -program. Till exempel ringer den här koden Excel, och öppnar Excel -filen ‘example_workbook.xlsx’:

1 Call Shell ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus)

Detta visar den öppnade filen:

ShellExecute och ShellExecuteEx vs Shell Command

Windows programmeringsutrymme erbjuder ShellExecute och ShellExecuteEx funktioner som anropar externa program från programvarukod. Jämfört med VBA Shell -funktionen erbjuder dessa Windows -funktioner mer flexibilitet, men VBA stöder dem inte och därför täcker denna artikel inte dem.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave