Jeśli znasz hasło, przejdź do dokumentu Excel. Następnie kliknij Plik> Zapisz jako. Po lewej stronie przycisku Zapisz znajduje się mała rozwijana etykieta Narzędzia. Kliknij na to, a następnie na Opcje ogólne. Usuń tam hasła i kliknij OK. Zapisz dokument.
Jeśli nie wiesz, jakie jest hasło, możesz użyć VBA, aby je znaleźć. Gdybym musiał zgadywać, twój użytkownik prawdopodobnie nie użył super silnego hasła, więc moglibyśmy go znaleźć przy użyciu metody typu brute force. Poniższy kod jest przybliżony, ale pomógł mi znaleźć słabe, utracone hasło do dokumentów niektórych moich użytkowników. Sprawdza hasła o dowolnej długości ze znakami ASCII od 1 do z. Zadzwoń do niego z okna natychmiastowego i poczekaj kilka minut:
? 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
lub coś podobnego.