VBA-shell

Deze zelfstudie laat zien hoe u de VBA Shell-functie gebruikt.

We kunnen de VBA gebruiken Schelp functie om een ​​afzonderlijk, uitvoerbaar programma aan te roepen vanuit een VBA-programma. Als we bijvoorbeeld Kladblok vanuit Excel moeten openen, kunnen we de VBA Shell-functie gebruiken om dit te doen. Als de Shell-aanroep slaagt, wordt de Windows TaskID-waarde van het aangeroepen programma geretourneerd. Als de Shell-aanroep mislukt, wordt nul geretourneerd.

Schelp heeft twee invoerparameters: a vereist padnaam om het programma aan te roepen, en een optionele raamstijl waarde die de stijl bepaalt van het venster waarin het programma wordt uitgevoerd. De padnaam waarde kan het programmapad / de map en argumenten bevatten.

Bel Shell

Deze code kan deel uitmaken van een uit te voeren macro Kladblok met behulp van de VBA-oproep commando om de . te bellen Schelp functie.

1 Bel Shell ("kladblok", vbNormalFocus)

Bijvoorbeeld:

Shell wacht

We kunnen de VBA gebruiken Wacht commando om het bellen uit te stellen Schelp opdracht voor een bepaalde tijd.

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

Daarom duurt het 5 seconden voordat het Shell-commando wordt aangeroepen.

Een fout retourneren vanuit de Shell-functie

Als we een fout in onze code hebben bij het aanroepen van de Schelp functie, en de fout wordt geretourneerd en onze code gaat in de foutopsporingsmodus.

In deze macro hebben we bijvoorbeeld "notitieblok" verkeerd gespeld.

1 Bel Shell ("notitieblok", vbNormalFocus)

Het resultaat van het uitvoeren van deze macro is:

VBA-programmering | Code Generator werkt voor u!

Een bestaand bestand openen met Shell

Als we een specifiek bestand hebben dat we willen openen met de Schelp commando, kunnen we de bestandsnaam in onze code opnemen.

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

Als we de bestandsnaam verkeerd spellen, wordt het bestand niet gevonden en verschijnt er een berichtvenster met de vraag of we een nieuw bestand willen maken.

Parameters die worden gebruikt door de Shell-functie

De Schelp functie heeft 2 parameters - de naam van het programma dat moet worden aangeroepen en de Windows-stijl die het programma gaat gebruiken. We hebben de vbNormaalFocus in de bovenstaande voorbeelden, wat betekent dat wanneer het programma (in dit geval Kladblok) wordt geopend, het de focus heeft en het wordt geopend in de standaardpositie en -grootte op de pc.

De Schelp biedt vijf andere opties:

vbVerbergen Verbergt het venster en stelt de focus op dat venster in

vbMinimizedFocus Geeft het venster weer als een pictogram met focus

vbMaximizedFocus Opent het programma in een gemaximaliseerd venster met focus

vbNormaalGeenFocus Herstelt het venster op de meest recente positie en grootte

vbGeminimaliseerdNoFocus Geeft het venster weer als een pictogram en het huidige actieve venster blijft actief

Een proces-ID retourneren vanuit het Shell-commando

Wanneer we de Schelp Commando, het retourneert een proces- of taak-ID. We kunnen de proces-ID in een variabele opslaan en die proces-ID gebruiken bij het uitvoeren van een ander commando - bijvoorbeeld de TaskKill commando om het Kladblok-bestand te sluiten.

123456 Sub TestPIDDim ProcessID als geheel getalprocessID = Shell ("kladblok", vbNormalFocus)Bel Shell ("Taskkill /F /PID" + CStr(proces-ID))MsgBox ("Notepad ProcessID = " + CStr(processID))Einde sub

In de eerste regel wordt Kladblok geopend en krijgt de proces-ID een waarde toegewezen door Windows. Deze waarde slaan we op in de ProcessID variabele. Vervolgens gebruiken we TaskKill om Kladblok te dwingen het exemplaar van Kladblok te sluiten dat we zojuist hebben geopend. De /F schakel krachten Kladblok eindigen, en de /PID schakelaar vertelt TaskKill om het Kladblok te zoeken Proces-ID waarde. De CStr-functie converteert ProcessID naar het tekenreeksformaat dat Shell en MsgBox op de volgende regel beide nodig hebben.

Moe van het zoeken naar voorbeelden van VBA-codes? Probeer AutoMacro!

VBA-programmering | Code Generator werkt voor u!

Andere programma's bellen met Shell

Shell zal elk ander Windows-programma openen. Deze code roept bijvoorbeeld Excel, en opent Excel-bestand 'example_workbook.xlsx':

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

Dit toont het geopende bestand:

ShellExecute en ShellExecuteEx versus het Shell-commando

De Windows-programmeerruimte biedt: ShellExecute en ShellExecuteEx functies die externe programma's aanroepen vanuit softwarecode. In vergelijking met de VBA Shell-functie bieden deze Windows-functies meer flexibiliteit, maar VBA ondersteunt ze niet en daarom behandelt dit artikel ze niet.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave