VBA-Shell

Dieses Tutorial zeigt, wie Sie die VBA-Shell-Funktion verwenden.

Wir können die VBA verwenden Hülse -Funktion, um ein separates, ausführbares Programm aus einem VBA-Programm heraus aufzurufen. Wenn wir beispielsweise Notepad aus Excel öffnen müssen, können wir dazu die VBA-Shell-Funktion verwenden. Wenn der Shell-Aufruf erfolgreich ist, gibt er den Windows TaskID-Wert des aufgerufenen Programms zurück. Wenn der Shell-Aufruf fehlschlägt, wird null zurückgegeben.

Hülse hat zwei Eingabeparameter: a erforderlich Pfadname für den Aufruf des Programms und ein optionales Fensterstil Wert, der den Stil des Fensters steuert, in dem das Programm ausgeführt wird. Die Pfadname value kann den Programmpfad / das Verzeichnis und Argumente enthalten.

Shell anrufen

Dieser Code kann Teil eines auszuführenden Makros sein Notizblock mit der VBA-Aufruf Befehl zum Aufrufen der Hülse Funktion.

1 Call Shell("notepad", vbNormalFocus)

Zum Beispiel:

Shell warten

Wir können die VBA verwenden Warte ab Befehl, um den Anruf zu verzögern Hülse Befehl für einen bestimmten Zeitraum.

12 Anwendung.Warten (Jetzt + Zeitwert("00:00:05"))Call Shell("notepad", vbNormalFocus)

Daher vergehen 5 Sekunden, bevor der Shell-Befehl aufgerufen wird.

Einen Fehler von der Shell-Funktion zurückgeben

Wenn wir beim Aufrufen von einen Fehler in unserem Code haben Hülse -Funktion, und ein Fehler wird zurückgegeben und unser Code wechselt in den Debug-Modus.

In diesem Makro haben wir beispielsweise „Notizblock“ falsch geschrieben.

1 Call Shell("Notizblock", vbNormalFocus)

Das Ergebnis der Ausführung dieses Makros ist:

VBA-Programmierung | Code Generator arbeitet für Sie!

Öffnen Sie eine vorhandene Datei mit Shell

Wenn wir eine bestimmte Datei haben, die wir mit dem öffnen möchten Hülse Befehl können wir den Dateinamen in unseren Code aufnehmen.

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

Wenn wir den Dateinamen falsch schreiben, wird die Datei nicht gefunden und ein Meldungsfeld erscheint, in dem wir gefragt werden, ob wir eine neue Datei erstellen möchten.

Von der Shell-Funktion verwendete Parameter

Die Hülse Die Funktion hat 2 Parameter - den Namen des aufzurufenden Programms und den Windows-Stil, den das Programm verwenden wird. Wir haben die verwendet vbNormalFocus In den obigen Beispielen bedeutet dies, dass das Programm (in diesem Fall Notepad) beim Öffnen den Fokus hat und in der Standardposition und -größe auf dem PC geöffnet wird.

Die Hülse bietet fünf weitere Optionen:

vbHide Blendet das Fenster aus und setzt den Fokus auf dieses Fenster

vbMinimizedFocus Zeigt das Fenster als Symbol mit Fokus an

vbMaximizedFocus Öffnet das Programm in einem maximierten Fenster mit Fokus

vbNormalNoFocus Stellt das Fenster an seiner letzten Position und Größe wieder her

vbMinimizedNoFocus Zeigt das Fenster als Symbol an und das aktuell aktive Fenster bleibt aktiv

Zurückgeben einer Prozess-ID vom Shell-Befehl

Wenn wir laufen Hülse Befehl, es gibt eine Prozess- oder Aufgaben-ID zurück. Wir können die Prozess-ID in einer Variablen speichern und diese Prozess-ID verwenden, um einen anderen Befehl auszuführen – zum Beispiel den AufgabeKill Befehl zum Schließen der Notepad-Datei.

123456 UntertestPIDDim ProcessID als GanzzahlprocessID = Shell("notepad", vbNormalFocus)Call Shell("Taskkill /F /PID " + CStr(processID))MsgBox ("Notepad ProcessID = " + CStr(processID))End Sub

In der ersten Zeile wird NotePad geöffnet und der Prozess-ID wird von Windows ein Wert zugewiesen. Wir speichern diesen Wert in der ProcessID-Variablen. Anschließend verwenden wir TaskKill, um Notepad zu zwingen, die gerade geöffnete Instanz von NotePad zu schließen. Die /F Schaltkräfte Notizblock zu Ende, und die /PID Schalter sagt AufgabeKill nach dem Notizblock suchen Prozess ID Wert. Die CStr-Funktion konvertiert PProzessID in das Zeichenfolgenformat, das Shell und MsgBox in der nächsten Zeile benötigen.

Sind Sie es leid, nach VBA-Codebeispielen zu suchen? Probieren Sie AutoMacro aus!

VBA-Programmierung | Code Generator arbeitet für Sie!

Aufrufen anderer Programme mit Shell

Shell öffnet jedes andere Windows-Programm. Dieser Code ruft zum Beispiel auf Excel, und öffnet die Excel-Datei ‘example_workbook.xlsx’:

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

Dies zeigt die geöffnete Datei:

ShellExecute und ShellExecuteEx im Vergleich zum Shell-Befehl

Der Windows-Programmierraum bietet ShellExecute und ShellExecuteEx Funktionen, die externe Programme aus Softwarecode aufrufen. Im Vergleich zur VBA-Shell-Funktion bieten diese Windows-Funktionen mehr Flexibilität, werden jedoch von VBA nicht unterstützt und werden daher in diesem Artikel nicht behandelt.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave