Wer kennt das nicht: Passwort vergessen! - Besonders heutzutage, wo man mehrere Kennwörter hat und teilweise aufgefordert wird, ein neues einzupflegen. So kann dies schnell zu einem mühsamen Unterfangen werden. Mit Excel und dessen Blattschutz kann dies ähnlich verlaufen. (... oder Du erhältst eine gesperrte Tabelle und willst gewisse Bereiche genauer anschauen... ;-))
Auf www.ulrichhanke.de habe ich eine interessante Anleitung gesehen, wie man den Blattschutz mittels VBA (Makro) knacken kann. Mit diesem Link geht's direkt zum erwähnten Beitrag auf www.ulrichhanke.de. Ich möchte an dieser Stelle kurz aufzeigen, wie Du selbst den Blattschutz setzen kannst, um den hier behandelten Inhalt zu testen. Öffne eine Excel-Tabelle und gehe in der Menüleiste auf "Überprüfen" - dort findest Du "Blatt schützen". Gib nun ein Passwort ein und bestätige dieses - danach ist Deine Tabelle gesperrt.
Was ist nun zu tun? Du öffnest Deine gesperrte Excel-Tabelle und gehst in die Makro-Umgebung via der Tastenkombination Alt+F11. Auf der linken Seite siehst Du sämtliche Tabellenblätter. Mache da einen Rechtsklick und gehe auf "Einfügen" → "Modul".
In dieses Modul schreibst Du dann den nachfolgenden Code:
Sub BlattschutzEntfernen()
On Error Resume Next
For i = 65 To 66: For j = 65 To 66
For k = 65 To 66: For l = 65 To 66
For m = 65 To 66: For n = 65 To 66
For o = 65 To 66: For p = 65 To 66
For q = 65 To 66: For r = 65 To 66
For s = 65 To 66: For t = 32 To 126
ActiveSheet.Unprotect Chr(i) & _
Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & _
Chr(p) & Chr(q) & Chr(r) & _
Chr(s) & Chr(t)
Next t: Next s: Next r: Next q
Next p: Next o: Next n: Next m
Next l: Next k: Next j: Next i
MsgBox "Blattschutz aufgehoben"
End Sub
Nun kannst Du das Makro ausführen und der Blattschutz wird entfernt. Für kurze Passwörter wie "gesperrt" dauert das Knacken nur wenige Augenblicke. Ich habe zudem ein komplexeres Passwort ausprobiert, beginnend mit einem Grossbuchstaben, zwei Zahlen und einem Sonderzeichen und den Prozess nach 5 Minuten abgebrochen - es kann also bei sichereren Kennwörtern durchaus eine lange Prozedur werden!
Weshalb funktioniert dieses Makro?
Beim einen oder anderen kommt bestimmt die Frage auf: Weshalb funktioniert dieses Makro? - und darauf möchte ich auch noch kurz eingehen. Der Blattschutz in Excel speichert Dein Passwort nicht 1:1, sondern es wird davon eine Art Quersumme berechnet. Daraus folgt, dass das gewählte Kennwort nicht ein Unikat ist - es könnten mehrere Passwörter möglich sein! Ich habe mit "gesperrt" einen weiteren Test durchgeführt: Das Passwort "AAABBBAAAAB{" ist gleichwertig! Versuche das einmal aus - sperre Deine Tabelle mit dem Passwort "gesperrt" und hebe den Blattschutz mit "AAABBBAAAAB{" wieder auf - das funktioniert! Wie bin ich auf diese seltsame Zeichenfolge gekommen? Ich habe das Makro leicht angepasst, hier ist der vollständige Code dazu:
Sub BlattschutzEntfernen()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim o As Integer, p As Integer, q As Integer
Dim r As Integer, s As Integer, t As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66
For k = 65 To 66: For l = 65 To 66
For m = 65 To 66: For n = 65 To 66
For o = 65 To 66: For p = 65 To 66
For q = 65 To 66: For r = 65 To 66
For s = 65 To 66: For t = 32 To 126
ActiveSheet.Unprotect Chr(i) & _
Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & _
Chr(p) & Chr(q) & Chr(r) & _
Chr(s) & Chr(t)
If ActiveSheet.ProtectContents = False Then
MsgBox "Ein mögliches Passwort ist " & _
Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
Chr(m) & Chr(n) & Chr(o) & Chr(p) & _
Chr(q) & Chr(r) & Chr(s) & Chr(t)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
Viel Spass & Erfolg beim Ausprobieren! Danke an Florian für den Hinweis!