Anzeige
Archiv - Navigation
964to968
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
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

Anzeige
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

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

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige