Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schreibgeschützte Datei ohne Speichern-Rückfrage

Forumthread: Schreibgeschützte Datei ohne Speichern-Rückfrage

Schreibgeschützte Datei ohne Speichern-Rückfrage
09.04.2008 09:27:00
Ben
Guten Morgen
Ich möchte, dass die User beim Schliessen keine Speichern-Rückfrage erhalten, wenn sie die Datei schreibgeschützt geöffnet haben. Dazu habe ich folgenden Code:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.ReadOnly = True Then
ReadGlobalState = True
Else
ReadGlobalState = False
End If
If ReadGlobalState = True Then
'schreibgeschützt schliessen ohne speichern-Rückfrage
ThisWorkbook.Close SaveChanges:=False
End If
End Sub


Das funktioniert im Prinzip auch gut. Nur, wenn man eine 2. Excel-Datei geöffnet, friert diese ein oder Excel stürzt ganz ab, wenn man die schreibgeschützte Datei geschlossen hat.
Hat jemand eine Idee, woran das liegen könnte?
Vielen Dank und Gruss
Ben

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schreibgeschützte Datei ohne Speichern-Rückfrage
09.04.2008 09:34:00
Hajo_Zi
Hallo Ben,
ich habe das Beispiel nicht nachgebaut. Aber ich hätte vielleicht mit ThisWorkbook.Saved gearbeitet.
Spiele Excel doch vor das die Datei nicht verändert wurde.

AW: Schreibgeschützte Datei ohne Speichern-Rückfra
09.04.2008 11:03:00
Ben
Hallo Hajo
Wie muss ich das denn genau einbauen. Ich bin ziemlicher VBA-Laie. Habe folgendes versucht:
ThisWorkbook.Close SaveChanges:=False
ersetzt mit
ThisWorkbook.Saved
Dann kommt aber die Rückfrage wegen dem Speichern.
Gruss
Ben

Anzeige
AW: Schreibgeschützte Datei ohne Speichern-Rückfra
09.04.2008 11:18:00
Hajo_Zi
Hallo Ben,

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.ReadOnly  Then ThisWorkbook.Saved =True
End Sub


Gruß Hajo

AW: Schreibgeschützte Datei ohne Speichern-Rückfra
09.04.2008 16:51:00
Ben
Hallo Hajo
Hallo Erich
Vielen Dank für die Hilfe. Konnte den Code so einbauen und jetzt läufts richtig rund.
Gruss
Ben

Anzeige
AW: Schreibgeschützte Datei ohne Speichern-Rückfra
09.04.2008 10:11:56
Erich
Hallo Ben,
probier mal

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.ReadOnly Then
Application.EnableEvents = False
ThisWorkbook.Close SaveChanges:=False
Application.EnableEvents = True
Cancel = True
End If
End Sub

Noch ein paar Comments:
If ThisWorkbook.ReadOnly = True Then
ist das Gleiche wie
If ThisWorkbook.ReadOnly Then
Application.EnableEvents = False
verhindert, dass diese Prozedur sich indirekt endlos immer wieder selbst aufruft.
(In der Prozedur steht ...Close... - und das löst das BeforeClose-Ereignis auf...)
Cancel = True
verhindert, dass VBA die Mappe nach Ende der Prozedur zu schließen versucht
(Die Mappe wird ja schon IN der Prozedur geschlossen.)
Wo ist ReadGlobalState deklariert? Ist aber unwichtig, wird gar nicht gebraucht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Schreibgeschützte Datei ohne Speichern-Rückfra
09.04.2008 11:05:48
Ben
Hallo Erich
Danke schon mal. Habe Deinen Code in "Diese Arbeitsmappe" kopiert und getestet. Die Speichern-Rückfrage kommt bei mir aber noch. Habe ich was falsch gemacht?
Gruss
Benno

AW: Schreibgeschützte Datei ohne Rückfrage speich
09.04.2008 12:52:45
Erich
Hallo Ben,
nein, du hast nichts falsch gemacht - aber ich (großes SORRY!):
In meinem Vorschlag steht

Application.EnableEvents = False
ThisWorkbook.Close SaveChanges:=False
Application.EnableEvents = True
Cancel = True

Die beiden letzten Zeilen kommen aber nicht mehr zur Ausführung,
weil die Ausführung des Codes mit dem Schließen der Mappe, in der er steht, beendet wird.
"Application.EnableEvents = True" wird also nicht ausgeführt,
damit bleibt die Ereignisbehandlung ausgeschaltet,
und beim nächsten Close wird "Workbook_BeforeClose" gar nicht aufgerufen.
Viel besser ist Hajos Vorschlag:


Private Sub xWorkbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.ReadOnly Then ThisWorkbook.Saved = True
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Schreibgeschützte Datei ohne Speichern-Rückfrage in Excel


Schritt-für-Schritt-Anleitung

Um eine schreibgeschützte Datei in Excel zu schließen, ohne dass eine Speichern-Rückfrage erscheint, kannst Du den folgenden VBA-Code verwenden. Dieser muss in das Modul „Diese Arbeitsmappe“ eingefügt werden:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ThisWorkbook.ReadOnly Then
        ThisWorkbook.Saved = True
    End If
End Sub
  1. Öffne Deine Excel-Datei.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Doppelklicke auf „Diese Arbeitsmappe“ im Projektfenster.
  4. Füge den obigen Code in den Codebereich ein.
  5. Schließe den VBA-Editor und teste das Schließen der Datei.

Häufige Fehler und Lösungen

Wenn Du immer noch eine Speichern-Rückfrage erhältst, könnte es an den folgenden Punkten liegen:

  • Falscher Code: Stelle sicher, dass der Code korrekt in „Diese Arbeitsmappe“ eingefügt wurde.
  • Ereignisbehandlung: Wenn Du Application.EnableEvents = False verwendest, stelle sicher, dass Du es nach dem Schließen der Datei wieder auf True setzt, damit zukünftige Ereignisse korrekt verarbeitet werden.

Falls Du den Code anpasst und weiterhin Probleme hast, versuche die folgende Variante:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If ThisWorkbook.ReadOnly Then
        Application.EnableEvents = False
        ThisWorkbook.Close SaveChanges:=False
        Application.EnableEvents = True
        Cancel = True
    End If
End Sub

Alternative Methoden

Eine andere Möglichkeit, eine Word-Datei schreibgeschützt zu speichern, besteht darin, die Datei mit den entsprechenden Berechtigungen zu speichern. Du kannst dies über die Dateioptionen in Word tun, indem Du die Datei mit „Speichern unter“ wählst und dann die „Allgemeinen Optionen“ im Dialogfeld öffnest, um „Schreibgeschützt“ zu aktivieren.


Praktische Beispiele

Hier sind einige Anwendungsbeispiele für den VBA-Code:

  1. Verwendung in einer schreibgeschützten Excel-Datei: Wenn Du eine schreibgeschützte Datei hast, die von mehreren Benutzern geöffnet wird, kannst Du diesen Code implementieren, um sicherzustellen, dass beim Schließen keine Rückfragen erscheinen.

  2. Kombination mit anderen Funktionen: Du kannst diesen Code auch in Kombination mit anderen VBA-Funktionen verwenden, um das Benutzererlebnis zu verbessern. Beispielsweise könnte das Schließen der Datei auch das Speichern von Protokollen oder anderen Informationen vor dem Schließen auslösen.


Tipps für Profis

  • Code testen: Teste den Code, bevor Du ihn in einer produktiven Umgebung einsetzt.
  • Backup erstellen: Erstelle immer eine Sicherungskopie Deiner Datei, bevor Du Änderungen am VBA-Code vornimmst.
  • Fehlerbehebung: Nutze die Debugging-Funktion im VBA-Editor, um sicherzustellen, dass keine unerwarteten Fehler auftreten.

FAQ: Häufige Fragen

1. Warum funktioniert der Code nicht?
Stelle sicher, dass Du den Code in das richtige Modul eingefügt hast und dass keine anderen VBA-Skripte in Konflikt stehen.

2. Kann ich diesen Code auch für andere Excel-Versionen verwenden?
Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen. Achte jedoch darauf, dass sich die Benutzeroberfläche in älteren Versionen leicht unterscheiden kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige