Hat man meherere Arbeitsblätter in einer Mappe mit einem
Blattschutz zu versehen, bietet es sich an, diese Aufgabe
durch eine VBA-Anwendung zu erledigen. Das ist weiter
nicht kompliziert und würde hier wohl kaum eine ganze
Seite rechtfertigen.
Etwas interessanter wird es bereits, wenn die Passwörter
vorgegeben sein sollen und dann aber irgendwie
hinterlegt werden müssen, so dass VBA in der Lage ist,
das nach einer Abfrage eingegebene Passwort zu prüfen.
Das Ablegen des Passwortes ist ein bisschen kritisch, weil
zu verhindern ist, dass es im Klartext ausgelesen werden kann.
Ausserdem sollte ein Variablenname nicht direkt anzeigen,
worum es sich dabei handelt. Ein sinnentstellender
Variablenname für das Passwort und die Darstellung des
Wortes z.B. im ASCII-Code nebst einer Sperrung des Makros
für die Anzeige, dürfte die ersten Crack-Versuche abblocken.
Im vorliegenden Fall Ist der Variablenname für das Passwort
"DieseMappe" und wird im ASCII-Code
zugewiesen. In einer InputBox wird dass Passwort abgefragt.
Das Wort "Passwort" für den Melungstext in der InputBox
wird in der Variablen "Datum"
gespeichert und ebenfalls im ASCII-Code
zugewiesen. Zuletzt wird die Variable für die InputBox noch
"BlattZahl" genannt.
Zugegeben, das ist nicht die Krönung der Kryptografie.
Aber einerseits soll hier nur ein Beispiel gegeben werden
und andererseits rechtfertigt der Blattschutz aber auch
keinen höheren Aufwand, weil er die am einfachsten
zu knackende Schutzstufe eines Excel-Workbooks darstellt.
Da helfen keine auch noch so intelligent erdachten
Verschlüsselungen. Ein primitiver Ausleseversuch
wird aber so mit einiger Sicherheit wirksam verhindert.
Um einen Fehler -besonders im Entschlüsseln-Makro- während
der Laufzeit abzufangen, kann man mit der Anweisung
"On Error GoTo Fehler" eine Adresse direkt vor End Sub
anspringen und dort eine Meldung herausgeben oder eine
passende Routine ablaufen lassen. Wird kein Fehler
produziert und der Code normal abgearbeitet, bricht
man vor der Fehlerbehandlungsroutine mit "Exit Sub" ab,
damit der Fehlerbehandlungscode am Ende nicht doch noch
verarbeitet wird.