Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ThisWorkbook.Saved = True????

Forumthread: ThisWorkbook.Saved = True?

ThisWorkbook.Saved = True?
25.11.2004 12:36:35
Frank
Hallo Excelperten,
ich habe ein fast schon lustiges Problem. Bisher habe ich folgendes verwendet, um eine Datei und Excel zu schließen:
Workbooks("Dateiname.xls").Activate
ThisWorkbook.Saved = True
Application.Quit
Jetzt klappt das aber nicht mehr!? Ich habe nur ein Kombinationsfeld eingefügt... Das lustige ist jetzt, wenn ich das kombinationsfeld wieder lösche, dann klappt auch der Code wieder... Habe es auch schon mit Application.DisplayAlerts = False vor Application.Quit versucht aber das klappt auch nicht. Wenn ich vor ThisWorkbook.Saved = True das Kombinationsfeld per Makro lösche, dann klappt es auch... Das wäre ja nicht so schlimm, da diese Änderung ja sowieso nicht gespeichert wird, aber mich verwirrt das trotzdem. Vielleicht hat ja jemand von Euch einen Hinweis.
MfG
Frank
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 12:56:21
Annett
Hallo Frank,
ist das Steuerelement vielleicht aktiviert?
Selektiere doch mal eine Zelle.
Gruß Annett
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 13:09:02
Frank
Hallo Annett,
klappt leider auch nicht. Aber ich habe festgestellt, dass das bei meinem Rechner (Excel 2000) und bei dem Rechner eines Kollegen (Excel 2002) immer so ist!? Ich erstelle eine neue Exceldatei, füge in diese ein Kombinationsfeld oder einen Commandbutton ein, gebe dann folgendes Makro im Editor uner Modul 1 ein:

Sub Beispiel()
ThisWorkbook.Saved = True
Application.Quit
End Sub

Wenn die Steuerelemente gelöscht werden klappt das Makro, wenn sie aber "in der Datei" bleiben, dann fragt Excel immer nochmal nach, ob man seine Änderungen nicht doch speichern möchte.
Hast du vielleicht noch eine Idee? Oder vielleicht die Zeit das mal bei Dir auszuprobieren?
Gruß
Frank
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 17:41:47
Annett
Hallo Frank,
das der Code unter dieseArbeitsmappe gehört ist Dir schon klar?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
Application.Quit
End Sub

Gruß Annett
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 18:12:37
Frank
Hallo Annett,
um ehrlich zu sein... nicht wirklick. Warum gehört der denn nur(?) in das BeforeClose Ereignis? Abgesehen davon hat das bisher auch immer aus anderen Subs funktioniert. Gehört ActiveWorkbook auch nur ins BeforeClose Ereignis? Bist du Dir sicher?
Es grüßt ein nun völlig verwirrter und um Erklärung bittender...
Frank
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 18:28:19
Annett
Hallo Frank,
das sind Ereignisse die mit der Datei zusammenhängen, öffen, schließen, Activieren, Deaktivieren usw. Darum unter DieserArbeitsmappe.
ActiveWorkbook und BeforeClose sind zwei völlog unterschiedliche Aktione. Wie es der Name schon sagt das eine bei Aktivierung das andere vor dem schließen.
Gruß Annett
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 18:42:21
Frank
Hallo Annett,
das das unterschiedliche Aktionen sind, ist mir schon klar. Aber man kann doch anstatt ThisWorkbook.Saved = True, (Excelhilfe: Schließt die Datei in der der Code mit der Zeile steht) auch ActiveWorkbook.Saved = True schrieben. Daher meine Frage ob ich in einem normalen Makro bzw. in dem Code einer Userform
ActiveWorkbook.Saved = True
Application.Quit
schreiben kann. Habe ich schon versucht, klappt aber auch nur wenn ich vorher das Kombinationsfeld lösche. Wenn ich
ThisWorkbook.Saved = True
in das BeforeClose Ereignis schriebe, klappt es übrigends auch nicht?
Gruß
Frank
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 18:46:49
Annett
Hallo Frank,
ich konnte Deinen Fehler nicht nachbauen. Vielleicht solltest Du mal die Datei hochladen.
Gruß Annett
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 19:08:21
Annett
Hallo Frank,
bei mir wird die Datei ohne Problem geschlossen.
Der Code ist sinnlos

Sub Beispiel()
ThisWorkbook.Saved = True
Application.Quit
End Sub

Da der Code nicht aufgerufen wird. Bzw. nur per Hand auch dabei wird die Datei geschlossen.
Gruß Annett
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 19:10:59
Frank
Hallo Annett,
und bei mir klappt weder der code "Beispiel" noch der Code im BeforeClose Ereignis!? Eine Idee warum? Welche Excelversion hast du?
Gruß
Frank
AW: ThisWorkbook.Saved = True?
25.11.2004 19:13:09
Annett
Hallo Frank,
Version 2003 aber daran kann es nicht liegen. Da sind keine besonderen Befehle drin
Gruß Annett
Anzeige
AW: ThisWorkbook.Saved = True?
25.11.2004 19:14:45
Frank
Hallo Annett,
noch ne andere Idee woran das liegen könnte?
Gruß
Frank
Danke für deine Bemühungen Annett!
25.11.2004 19:47:06
Frank
...
erledigt oT
Andi
o
Anzeige
;
Anzeige

Infobox / Tutorial

Problemlösung für ThisWorkbook.Saved in Excel VBA


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass Excel die Datei ohne Nachfrage schließt, kannst Du folgenden VBA-Code verwenden. Dieser sollte in das Workbook_BeforeClose-Ereignis eingefügt werden:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Saved = True
    Application.Quit
End Sub

Stelle sicher, dass dieser Code im Modul DieseArbeitsmappe steht, damit er korrekt ausgeführt wird, wenn Du versuchst, die Arbeitsmappe zu schließen.


Häufige Fehler und Lösungen

Problem 1: Excel fragt weiterhin nach dem Speichern.
Falls Du nach dem Ausführen des Codes gefragt wirst, ob Du die Änderungen speichern möchtest, kann das an aktiven Steuerelementen (wie Kombinationsfeldern oder Commandbuttons) liegen. Lege sicher, dass diese vor dem Schließen entfernt oder deaktiviert werden.

Lösung: Lösche die Steuerelemente vor dem Schließen oder setze den Code zur Deaktivierung in das BeforeClose-Ereignis.

Problem 2: Der Code wird nicht ausgeführt.
Wenn der Code nicht ausgeführt wird, kann dies daran liegen, dass Du ihn nicht im richtigen Modul eingefügt hast.

Lösung: Stelle sicher, dass der Code im DieseArbeitsmappe-Modul und nicht in einem regulären Modul eingefügt wird.


Alternative Methoden

Falls Du das ThisWorkbook.Saved nicht verwenden möchtest, kannst Du auch ActiveWorkbook.Saved verwenden. Es funktioniert jedoch nur, wenn das aktive Workbook das ist, das Du schließen möchtest:

ActiveWorkbook.Saved = True
Application.Quit

Beachte, dass es in einigen Fällen nicht funktioniert, wenn aktive Steuerelemente vorhanden sind.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um das Verhalten von ThisWorkbook.Saved zu demonstrieren. Erstelle ein neues Makro:

Sub Beispiel()
    ThisWorkbook.Saved = True
    Application.Quit
End Sub

Führe dieses Makro aus, nachdem Du ein Kombinationsfeld hinzugefügt hast. Du wirst feststellen, dass Excel trotzdem nach dem Speichern fragt. Um dies zu vermeiden, entferne das Kombinationsfeld oder setze den Code im Workbook_BeforeClose-Ereignis ein.


Tipps für Profis

  1. Verwende Application.DisplayAlerts = False: Setze dies vor Application.Quit, um Dialogfelder zu unterdrücken, die Fragen zum Speichern aufwerfen.

  2. Testen in verschiedenen Excel-Versionen: Da es Unterschiede in den Excel-Versionen geben kann, teste Deinen Code in verschiedenen Versionen, um sicherzustellen, dass er überall funktioniert. Zum Beispiel in Excel 2000, 2002 oder 2003.

  3. Ereignisprozeduren: Lerne die verschiedenen Ereignisse wie Workbook_Open, Workbook_BeforeClose und Workbook_Deactivate kennen, um mehr Kontrolle über die Arbeitsmappe zu haben.


FAQ: Häufige Fragen

1. Warum funktioniert ThisWorkbook.Saved = True nicht immer?
Das Verhalten kann von aktiven Steuerelementen abhängen. Wenn solche Elemente vorhanden sind, kann Excel nach dem Speichern fragen.

2. Wo sollte ich den Code einfügen?
Der Code sollte im DieseArbeitsmappe-Modul eingefügt werden, um sicherzustellen, dass er bei Schließaktionen korrekt ausgelöst wird.

3. Kann ich ActiveWorkbook.Saved anstelle von ThisWorkbook.Saved verwenden?
Ja, aber beachte, dass es nur funktioniert, wenn das aktive Workbook das ist, das Du schließen möchtest. In vielen Fällen ist ThisWorkbook die sicherere Wahl.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige