Wenn Sie das Kennwort kennen, öffnen Sie das Excel-Dokument. Klicken Sie dann auf Datei> Speichern unter. Links neben der Schaltfläche Speichern befindet sich ein kleines Dropdown-Menü mit der Bezeichnung Extras. Klicken Sie darauf und dann auf Allgemeine Optionen. Löschen Sie dort die Passworteinträge und klicken Sie auf OK. Speichern Sie das Dokument.
Wenn Sie das Kennwort nicht kennen, können Sie es mit VBA suchen. Wenn ich raten müsste, hat Ihr Benutzer wahrscheinlich kein besonders starkes Passwort verwendet, sodass wir eine Brute-Force-Methode verwenden könnten, um es zu finden. Der folgende Code ist grob, aber er hat mir geholfen, ein schwaches, verlorenes Passwort in mehreren Dokumenten meiner Benutzer zu finden. Es sucht nach Passwörtern beliebiger Länge mit den ASCII-Zeichen von 1 bis z. Sie würden es aus dem Sofortfenster aufrufen und einige Minuten wie folgt warten:
? GetPassword("D:\mywkbk.xlsx")
- -
Public Function GetPassword(ByRef sFileName As String) As String
On Error Resume Next
Dim pw As String
pw = ""
Do
VBA.Err.Clear
pw = GenerateNextPassword(pw)
Application.Workbooks.Open sFileName, False, True, , pw, pw
VBA.DoEvents
Loop While VBA.Err.Number = 5408
GetPassword = pw
End Function
Public Function GenerateNextPassword(ByRef sCurrentPassword As String) As String
Const MAX_CHAR = 122
Const MIN_CHAR = 49
Dim sCurrentPasswordMax As String
Dim sNewPassword As String
Dim i As Long
sCurrentPasswordMax = String(Len(sCurrentPassword), Chr(MAX_CHAR))
If sCurrentPassword = sCurrentPasswordMax Then
'do an increment that changes the length
sNewPassword = String(Len(sCurrentPassword) + 1, Chr(MIN_CHAR))
Debug.Print Now(); ": "; sNewPassword
ElseIf Asc(Right(sCurrentPassword, 1)) = MAX_CHAR Then
'do an increment that changes multiple characters
sNewPassword = Left(sCurrentPassword, Len(sCurrentPassword) - 1) & Chr(MIN_CHAR)
For i = Len(sCurrentPassword) - 1 To 1 Step -1
sNewPassword = Left(sNewPassword, i - 1) & Chr(Asc(Mid(sNewPassword, i, 1)) + 1) & Mid(sNewPassword, i + 1)
If Asc(Mid(sCurrentPassword, i, 1)) <> MAX_CHAR Then
Exit For
End If
Next i
Else
'do an increment on the rightmost character
sNewPassword = Left(sCurrentPassword, Len(sCurrentPassword) - 1) & Chr(Asc(Right(sCurrentPassword, 1)) + 1)
End If
GenerateNextPassword = sNewPassword
End Function
decrypt xls
oder ähnliches.