it-swarm.com.de

Schließen der Excel-Anwendung mit VBA

Ich habe das Folgende ohne Erfolg benutzt. Die aktive Arbeitsmappe wird zwar geschlossen, das Excel-Fenster bleibt jedoch geöffnet.

Application.ActiveWindow.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False

Welches ist der Befehl, der die Anwendung beendet?

BEARBEITEN

Um noch etwas zu sagen: Im Open-Event der Arbeitsmappe führe ich ein Makro aus. Ich möchte die Anwendung beenden, wenn das Makro beendet ist. Ich habe das auch ohne Erfolg versucht.

Private Sub Workbook_Open()
   Macro_MyJob
   Application.Quit
End Sub

Wo soll ich diesen Application.Quit-Befehl einfügen?

29
Brani

Ich denke, Ihr Problem ist, dass das Dokument geschlossen wird, das das Makro aufruft, bevor Sie den Befehl zum Beenden der Anwendung senden.

In diesem Fall können Sie keinen Befehl zum Schließen der Arbeitsmappe senden. Stattdessen können Sie den Status "Gespeichert" der Arbeitsmappe auf "true" setzen, wodurch Meldungen zum Schließen eines nicht gespeicherten Buches umgangen werden. Hinweis: Dadurch wird die Arbeitsmappe nicht gespeichert. Es sieht nur so aus, als wäre es gerettet.

ThisWorkbook.Saved = True

und dann gleich danach

Application.Quit
48
variant

Um die Meldung "Save Prompt" zu vermeiden, müssen Sie diese Zeilen einfügen

Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True

Nach dem Speichern Ihrer Arbeit müssen Sie diese Zeile verwenden, um die Excel-Anwendung zu beenden

Application.Quit

Fügen Sie diese Zeile nicht einfach in Private Sub Workbook_Open () ein, es sei denn, Sie haben eine korrekte Zustandsprüfung durchgeführt. Andernfalls können Sie Ihre Excel-Datei beschädigen. 

Erstellen Sie aus Sicherheitsgründen ein Modul, um es auszuführen. Das Folgende sind die Codes, die ich gesetzt habe:

Sub testSave()
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
End Sub

Ich hoffe, es hilft Ihnen, das Problem zu lösen.

7
Leng Keong
Application.Quit 

Sollte den Trick tun.

4
Michael
Sub TestSave()
Application.Quit
ThisWorkBook.Close SaveChanges = False
End Sub

Das scheint für mich zu funktionieren, auch wenn es so aussieht, als würde ich die App vor dem Speichern beenden, aber es spart 

3
kc kalama

Ich habe eine bestimmte Sequenz ausprobiert, die scheinbar funktioniert, wie Sie unten sehen können:

ThisWorkbook.Saved = True
Application.Quit
Application.ActiveWindow.Close SaveChanges:=False
ActiveWorkbook.Close SaveChanges:=False
1
Dan

Sie können es ausprobieren

ThisWorkbook.Save
ThisWorkbook.Saved = True
Application.Quit
0
K10

In meinem Fall musste ich nur ein Excel-Fenster und nicht die gesamte Anwendung schließen. Daher musste ich angeben, welches Fenster genau geschlossen werden soll, ohne es zu speichern.

Die folgenden Zeilen funktionieren einwandfrei:

Windows("filename.xlsx").Activate
ActiveWorkbook.Close SaveChanges:=False