Blattschutz und Schreibschutz

Schreibschutz per Makro

Die Aufgabe

Mit einfachen Möglichkeiten soll ein einzelnes Arbeitsblatt, die komplette Mappe oder einzelne Blätter einer Mappe gegen versehentliches Überschreiben bzw. unbefugte Änderungen geschützt werden. Da es ja wenig sinnvoll ist, als Passwort Geburtstage oder Namen zu verwenden, ist in den folgenden Code-Mustern ein etwas kryptisches Passwort eingesetzt worden. Trotz des Schutzes wird Excel natürlich die betroffenen Zellen immer dann ändern, wenn eine Berechnung dieses erforderlich macht. Nur der Benutzer kann dort keine Änderungen per Hand vornehmen.

Zugegeben, wer etwas bewanderter ist in Excel und weiß, dass er mit der Tastenkombination AltF11 in den VBA-Editor gelangt kann. Dort ist dann in den meisten Fällen das Passwort leicht auszulesen, solange nicht besondere Schutzmaßnahmen getroffen worden sind. Aber für „Otto Normaluser“ sollte beschriebene Weg des Schutzes reichen. Und natürlich darf es auch ein leeres Passwort sein, wenn es nur darum geht, dass irgendwelche Zellen nicht versehentlich überschrieben werden.

Der komplette Schutz eines Blattes ist meistens nicht wünschenswert bzw. sinnvoll. Ein­zelne Felder oder Bereiche sind vielfach für die Eingabe durch einen Benutzer gedacht. Diese Zellen müssen Sie im Vorwege über das Zahlenformat besonders kennzeichnen. Mehr dazu finden Sie hier im Blog.

▲ nach oben …

Der Code

Hier nun in einem Modul den Code, welcher nach dem Öffnen der Arbeitsmappe (der *.xls*-Datei) automatisch die gesamte Mappe schützt sowie zwei weitere Routinen, wo jeweils (nur) in dem Arbeitsblatt mit dem Namen Tabelle1 der Schutz gesetzt und wieder aufgehoben wird. Änderungen können nach dem einschalten des Schutzes nur noch in den Feldern vorgenommen werden, die durch die For­ma­tie­rung (Zahlenformat) explizit auf „nicht geschützt“ gesetzt worden sind:

Option Explicit

Sub Workbook_Open()
'Automatischer Schutz aller Arbeitsblätter der Mappe
   Dim Ws As Worksheet
   Set Ws = Activeworksheet
   For Each Ws In ThisWorkbook.Worksheets
      Ws.Protect Password:="<Üö.,#'w|F254:;", 
   Next Ws 
   Set Ws = Nothing 
End Sub

Sub SchreibSchutz_An 
   Sheets("Tabelle1").Protect Password:="<Üö.,#'w|F254:;"
End Sub 

Sub SchreibSchutz_Aus
   Sheets("Tabelle1").Unprotect Password:="<Üö.,#'w|F254:;"
End Sub

▲ nach oben …

Code4Import

Den oben stehenden Code sowie verschiedene andere Varianten, wo bestimmte Blätter vom Schutz ausgeschlossen sind, bekommen Sie in dieser Datei. Die Namen der Routinen sind (hoffentlich) selbst erklärend, zusätzlich ist noch eine Kommentarzeile mit Hinweisen eingefügt.

Es versteht sich von alleine, dass Sie das jeweilige Passwort in beiden Modulen Ihren Wünschen entsprechend anpassen müssen und dass es (natürlich) identisch sein muss.

▲ nach oben …

Dieser Beitrag wurde unter Mit VBA/Makro, Tabelle und Zelle, Tipps und Tricks abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.