Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA temporäre Mappe nicht speichern wenn

VBA temporäre Mappe nicht speichern wenn
11.04.2020 17:38:30
W
Hallo VBA-Profis,
Ich erstelle aus einer Excel-Mappe heraus eine weitere Mappe. Dieser neuen Mappe werden auch Makros mitgegeben.
Normalerweise sollte die Mappe am Ende wieder gelöscht werden Es gibt aber auch manchmal Gründe dafür, die Mappe zu speichern.
Bei meinen Versuchen habe ich festgestellt, dass der "ThisWorkbook.Path" nicht geffüllt ist, wenn die Mappe zuvor noch nie gesichert wurde. Ich wollte dann den Event "Workbook_BeforeClose" benutzen, um die Mappe ohne Sicherung und ohne weiteren Eingriff des Anwenders zu schließen. Doch irgendwie funktioniert das nicht richtig. Und obwohl der Befehl "Application.Quit" ausgeführt wurde, wird die Mappe und damit auch Excel nicht beeendet.Erst der nachfolgende "ActiveWorkbook.Close SaveChanges:=False" schließt die Mappe; Excel bleibt jedoch aktiv.
Zuerst hatte ich den Befehl "Application.EnableEvents = False" nicht gesetzt; als Folge davon wurde nach "ActiveWorkbook.Close" der Event erneut durchlaufen.
Was ist an nachfolgendem Code falsch?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.EnableEvents = False
If ThisWorkbook.Path = "" Then  ' Mappe wurde noch nie gesichert
If Workbooks.Count = 1 Then
Application.DisplayAlerts = False
Application.Quit
End If
ActiveWorkbook.Close SaveChanges:=False
Cancel = True
Else
Cancel = False
End If
Application.EnableEvents = True
End Sub

Gruß W H21

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA temporäre Mappe nicht speichern wenn
11.04.2020 18:14:52
Nepumuk
Hallo,
teste mal:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ThisWorkbook.Path = vbNullString Then
        If Workbooks.Count = 1 Then
            Saved = True
            Application.Quit
        End If
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA temporäre Mappe nicht speichern wenn
12.04.2020 08:59:47
W
Hallo Nepumuk, und "frohe Ostern".
Leider hat Dein Code-Vorschlag das Problem nicht lösen können. Aber mir ist vor ein paar Minuten eingefallen: eine Mappe wurde geschlossen und Excel beendet, ohne dass ich das damals wollte. Es war schwierig, die Ursache zu finden. Ursache war ganz einfach der Befehl "End".
Ich habe nun meinen Code wie folgt geändert:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Path = "" Then  ' Mappe wurde noch nie gesichert
If Workbooks.Count = 1 Then
ThisWorkbook.Saved = True
'Application.Quit ==>> funktioniert nicht
End
End If
ActiveWorkbook.Close SaveChanges:=False
End If
End Sub

In der MS-Dokumentation habe ich dazu folgendes gefunden:
End Beendet die Ausführung sofort. Wird nie für sich selbst benötigt, kann jedoch an einer beliebigen Stelle in einer Prozedur eingefügt werden, um die Codeausführung zu beenden, Dateien, die mit der Open -Anweisung geöffnet wurden, zu schließen und Variablen zu löschen.

Mein Hinweis: wurde die Mappe verändert und noch nicht gesichert, erscheint der Dialog zum Sichern der Mappe.
Jetzt tut alles so, wie ich mir das gewünscht habe. Problem gelöst. Danke.
Gruß W H21
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige