Zum Hauptinhalt springen

Warum der Befehl Application.Beenden in VBA schließt Excel die Anwendung nicht?

Seit einigen Jahren stehen Programmierer, die mit VBA in Excel arbeiten, vor einem Problem, wenn der Befehl Application ausgeführt wird.Quit schließt die App nicht vollständig, sodass sie im Hintergrund ausgeführt wird. Dies verursacht nicht nur Unannehmlichkeiten, sondern führt auch dazu, dass andere Programme und das gesamte Betriebssystem nicht ordnungsgemäß funktionieren.

Es stellt sich heraus, dass dieses Verhalten auf die Besonderheiten von VBA und seiner Interaktion mit Microsoft Office-Anwendungen zurückzuführen ist. Wenn Sie den Befehl Application aufrufen.Quit VBA beendet seine eigenen Objekte und Ressourcen, gibt die Anwendung jedoch nicht vollständig frei. Dies kann auf den Wunsch von Microsoft zurückzuführen sein, die Anwendung aktiv zu halten, damit der Benutzer die Anwendung nach Abschluss des Makros wiederherstellen kann.

Um Excel vollständig mit VBA zu schließen, müssen Sie den Befehl Workbook aufrufen.Close zusammen mit dem Befehl Application.Quit.

Diese Methode zum Schließen von Excel kann jedoch zum Verlust von nicht gespeicherten Daten führen. Daher sollten Sie bei der Verwendung dieses Befehls vorsichtig sein und den Benutzer vor möglichen Datenverlusten warnen.

Was ist der Grund dafür, dass der Befehl Application.Beenden in VBA beendet Excel die Anwendung nicht?

Der Befehl Application.Quit in VBA Excel wurde entwickelt, um eine Excel-Anwendung zu schließen, es gibt jedoch Fälle, in denen das Programm nicht vollständig beendet wird. Dies kann aus folgenden Gründen verursacht werden:

1. Geöffnete Dokumente: Wenn zum Zeitpunkt der Ausführung des Befehls Application.Beenden Sie in VBA Excel geöffnete Dokumente haben, dann wird Excel aufgefordert, sie zu speichern, bevor Sie die Anwendung schließen. Wenn der Benutzer die Änderungen nicht speichert oder das Schließen abbricht, ohne sie zu speichern, bleibt die Anwendung geöffnet.

2. Funktionierende Makros oder Prozeduren: Wenn zum Zeitpunkt der Ausführung des Befehls Application.Beenden Ein Makro oder eine Prozedur wird in VBA Excel ausgeführt, und die Anwendung wird erst geschlossen, wenn sie abgeschlossen ist. Wenn ein Makro oder eine Prozedur durchlaufen oder gesperrt ist, wird Excel möglicherweise nicht geschlossen.

3. Sekundäre Prozesse: Wenn Excel ausgeführt wird, kann es sekundäre Prozesse wie die Taskleiste oder verbundene Anwendungen erstellen. Wenn diese Prozesse aktiv bleiben, wird der Befehl Application ausgeführt.Beenden in VBA Excel kann die Anwendung möglicherweise nicht vollständig schließen.

Um sicherzustellen, dass Excel vollständig geschlossen wird, sollten Sie sicherstellen, dass alle Dokumente gespeichert und geschlossen sind, alle aktuellen Makros und Prozeduren abgeschlossen sind und alle Excel-bezogenen Prozesse und verbundenen Anwendungen geschlossen werden.

Quelle des Problems

Problem beim Schließen von Excel mit dem Befehl Application.Quit in VBA kann mehrere Quellen haben. Betrachten Sie die Hauptgründe, warum ein Befehl möglicherweise nicht ordnungsgemäß ausgeführt wird:

  1. Wenn Dokumente geöffnet sind: Wenn zum Zeitpunkt der Ausführung des Befehls Application.Beenden Sie Dokumente werden in Excel geöffnet, können automatisch gespeichert oder ein Dialogfeld angezeigt, in dem Sie aufgefordert werden, die Änderungen zu speichern. In diesem Fall ist der Befehl Application.Quit schließt die Anwendung erst, wenn alle Dokumente geschlossen oder gespeichert wurden.
  2. Ausführungsverzögerung: In einigen Fällen wird der Befehl Application ausgeführt.Quit kann asynchron ausgeführt werden, was bedeutet, dass der Code nach dem Befehl ausgeführt werden kann, bevor die Anwendung vollständig geschlossen wird. Es gibt Situationen, in denen der Code nach dem Application-Befehl ausgeführt wird.Quit kann neue Vorgänge auslösen, bevor die Anwendung tatsächlich geschlossen wird, wodurch der Befehl abgebrochen oder falsch geschlossen wird.
  3. Andere laufende Prozesse: Excel kann mit anderen Prozessen oder Makros verknüpft sein, die möglicherweise vor dem Schließen gestartet werden. Wenn diese Prozesse nicht ordnungsgemäß beendet werden, kann Excel nach dem Ausführen des Befehls Application geöffnet bleiben.Quit .
  4. Ungültiger VBA-Code: VBA-Code, der den Befehl Application verwendet.Quit kann einen Fehler oder eine Inkonsistenz enthalten, die dazu führt, dass der Befehl nicht korrekt ausgeführt wird. Beispielsweise kann die falsche Verwendung von bedingten Anweisungen oder Schleifen dazu führen, dass der Application-Befehl übersprungen wird.Quit .

Wenn Sie diese möglichen Ursachen untersuchen, können Sie das Problem beim Schließen von Excel mithilfe des Befehls Application finden und beheben.Quit .

Auswirkungen von benutzerdefinierten Aktionen

In einigen Fällen ist der Befehl Application.In VBA beenden Excel kann die Anwendung möglicherweise nicht beendet werden, wenn ein Benutzer eingreift. Dies kann aus verschiedenen Gründen verursacht werden, wie zum Beispiel:

1. Verfügbarkeit der AnwendungsfunktionalitätWenn der Benutzer aktiv mit der Anwendungsfunktionalität interagiert, z. B. Zellen bearbeitet oder andere Vorgänge ausführt, wird der Befehl Application ausgeführt.Quit kann ignoriert werden. Die Anwendung kann versuchen, sie nur zu schließen, wenn alle Benutzeraktionen abgeschlossen sind.
2. Unvollständige OperationenWenn der Benutzer mit einigen Vorgängen begonnen hat, die Zeit in Anspruch nehmen (z. B. die Verarbeitung großer Datenmengen oder das Speichern einer Datei), wird der Befehl Application ausgeführt.Quit kann ignoriert werden, bis diese Vorgänge abgeschlossen sind.
3. Öffnen von DialogfeldernWenn in Ihrer Anwendung Dialogfelder geöffnet sind (z. B. ein Fenster zum Öffnen/Speichern von Dateien oder ein Warndialogfeld), wird der Befehl Application ausgeführt.Quit kann ignoriert werden, bis diese Fenster vom Benutzer geschlossen werden.
4. Die Anwendung kann nicht geschlossen werdenIn einigen Fällen ist die Anwendung möglicherweise so konfiguriert, dass das Programm nicht geschlossen werden kann. Dies kann durch Sicherheitsrichtlinien oder Systemeinstellungen verursacht werden, die die Möglichkeit einschränken, Anwendungen mit Code zu schließen.

Angesichts der oben genannten Faktoren wird empfohlen, bevor Sie die Anwendung mit dem Befehl Application schließen.Stellen Sie sicher, dass alle Benutzervorgänge abgeschlossen sind und die geöffneten Dialogfelder geschlossen sind. Sie können den Benutzer auch vorab über eine bevorstehende Schließung benachrichtigen und eine Bestätigung anfordern.