Schreibschutz per Makro

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Schreibschutz per Makro
von: Marc Richter
Geschrieben am: 05.11.2003 13:26:26

Hallo,

ich habe folgenden Code eingegeben:


Private Sub Workbook_Open()
ActiveWorkbook.ChangeFileAccess xlReadOnly
End Sub


Wenn ich das in "Diese Arbeitsmappe" kopiere und ausführe, dann soll die Datei eigentlich schreibgeschützt sein. Wenn ich aber etwas verändere und dann speichere, dann sagt er, das diese Datei schon vorhanden ist und fragt ob sie überschrieben werden soll. Selbst wenn ich ja sage und dann die Datei schließe und neu öffne, ist die Änderung nicht mehr vorhanden. Insofern funktioniert der Code. Ich möchte auch von vornherein unterbinden, das er speichert, auch wenn er nur so tut als ob. Er soll am besten eine Msgbox zeigen, in der darauf hingewiesen wird, das dies zur Zeit nicht möglich ist. Kann mir da jemand helfen?

Danke schonmal im Voraus! Auch vielen Dank an Russi, von dem ich den Code oben habe!!!

Gruß,
Euer Marc
Bild


Betrifft: AW: Schreibschutz per Makro
von: Gert Seler
Geschrieben am: 05.11.2003 14:15:21

Hallo Marc,
um ein "Tabellenblatt" zu schützen is kein VBA nötig.
gehe zu "EXTRAS" ---> "Schutz" ---> "Arbeitsmappe schützen" mit Kennwort,
und alle Tab-Blätter der Mappe können nicht mehr geändert werden. Bei Eingaben
erscheint eine Meldung, das diese Mappe nich zu bearbeiten ist.
mfg
Gert


Bild


Betrifft: AW: Schreibschutz per Makro
von: Marc Richter
Geschrieben am: 05.11.2003 14:22:53

Hallo Gert,

danke für die Info. Aber das war bisher auch schon so. Und eben genau diese Meldung wollte ich umgehen, aber trotzdem die Datei schreibgeschützt wissen. Ich bin jetzt auf folgende Lösung gekommen: (Für Verbesserungsvorschläge bin ich immer offen!)


Private Sub CommandButton1_Click()
Range("B10").Select
back = MsgBox("Wollen Sie wirklich speichern?" & (Chr(13)) & " " & (Chr(10)) & "ACHTUNG, alle Einstellungen und Daten werden übernommen!", vbCritical + vbYesNoCancel + vbDefaultButton2, "ACHTUNG!!!")
Select Case back
Case 6
If ActiveWorkbook.ReadOnly Then
    back = MsgBox("Achtung, diese Datei ist schreibgeschützt. Sie können nicht speichern!", vbCritical + vbOKOnly, "ACHTUNG!!!")
Select Case back
Case 1
Exit Sub
End Select
End If
For Each W In Application.Workbooks
    W.Save
Next W
Case 7
Exit Sub
End Select
End Sub


Dieser Code bewirkt, das ich, wenn der VB-Schreibschutz aktiv ist, nicht speichern kann. Wenn er nicht aktiv ist, z. B. durch ein (') vor der Zeile, dann kann ich wieder speichern! Wie gesagt, sollte es eine elegantere Lösung geben, bin ich für alles offen!

Gruß,
Marc


Bild

Beiträge aus den Excel-Beispielen zum Thema " Rueckgabewert von Speichern unter"