Blattschutz und Schreibschutz

Schreibschutz per Makro

Die Aufgabe

Mit ein­fachen Möglichkeit­en soll ein einzelnes Arbeits­blatt, die kom­plette Mappe oder einzelne Blät­ter ein­er Mappe gegen verse­hentlich­es Über­schreiben bzw. unbefugte Änderun­gen geschützt wer­den. Da es ja wenig sin­nvoll ist, als Pass­wort Geburt­stage oder Namen zu ver­wen­den, ist in den fol­gen­den Code-Mustern ein etwas kryp­tis­ches Pass­wort einge­set­zt wor­den. Trotz des Schutzes wird Excel natür­lich die betrof­fe­nen Zellen immer dann ändern, wenn eine Berech­nung dieses erforder­lich macht. Nur der Benutzer kann dort keine Änderun­gen per Hand vornehmen.

Zugegeben, wer etwas bewan­dert­er ist in Excel und weiß, dass er mit der Tas­tenkom­bi­na­tion AltF11 in den VBA-Edi­tor gelangt kann. Dort ist dann in den meis­ten Fällen das Pass­wort leicht auszule­sen, solange nicht beson­dere Schutz­maß­nah­men getrof­fen wor­den sind. Aber für „Otto Nor­maluser” sollte beschriebene Weg des Schutzes reichen. Und natür­lich darf es auch ein leeres Pass­wort sein, wenn es nur darum geht, dass irgendwelche Zellen nicht verse­hentlich über­schrieben wer­den.

Der kom­plette Schutz eines Blattes ist meis­tens nicht wün­schenswert bzw. sin­nvoll. Ein­zelne Felder oder Bere­iche sind vielfach für die Eingabe durch einen Benutzer gedacht. Diese Zellen müssen Sie im Vor­wege über das Zahlen­for­mat beson­ders kennze­ich­nen. Mehr dazu find­en Sie hier im Blog.

▲ nach oben …

Der Code

Hier nun in einem Mod­ul den Code, welch­er nach dem Öff­nen der Arbeitsmappe (der *.xls*-Datei) automa­tisch die gesamte Mappe schützt sowie zwei weit­ere Rou­ti­nen, wo jew­eils (nur) in dem Arbeits­blatt mit dem Namen Tabelle1 der Schutz geset­zt und wieder aufge­hoben wird. Änderun­gen kön­nen nach dem ein­schal­ten des Schutzes nur noch in den Feldern vorgenom­men wer­den, die durch die For­ma­tie­rung (Zahlen­for­mat) expliz­it auf „nicht geschützt” geset­zt wor­den 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 ste­hen­den Code sowie ver­schiedene andere Vari­anten, wo bes­timmte Blät­ter vom Schutz aus­geschlossen sind, bekom­men Sie in dieser Datei. Die Namen der Rou­ti­nen sind (hof­fentlich) selb­st erk­lärend, zusät­zlich ist noch eine Kom­men­tarzeile mit Hin­weisen einge­fügt.

Es ver­ste­ht sich von alleine, dass Sie das jew­eilige Pass­wort in bei­den Mod­ulen Ihren Wün­schen entsprechend anpassen müssen und dass es (natür­lich) iden­tisch sein muss.

[NachOben­Let­zte Verweis=„T&T: Blattschutz VBA”]
Dieser Beitrag wurde unter Mit VBA/Makro, Tabelle und Zelle, Tipps und Tricks abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.