Если вы знаете, что такое пароль, откройте документ Excel. Затем нажмите Файл> Сохранить как. Слева от кнопки «Сохранить» находится маленький выпадающий список «Инструменты». Нажмите на это, а затем нажмите на Общие параметры. Удалите введенные там пароли и нажмите ОК. Сохраните документ.
Если вы не знаете, что такое пароль, вы можете использовать VBA, чтобы найти его. Если бы мне пришлось угадывать, ваш пользователь, вероятно, не использовал сверхнадежный пароль, поэтому мы могли бы использовать метод с использованием грубой силы, чтобы найти его. Приведенный ниже код является грубым, но он помог мне найти слабый, потерянный пароль в нескольких документах моих пользователей. Он проверяет пароли любой длины с символами ASCII от 1 до z. Вы бы позвонили из окна «Немедленно» и подождали несколько минут так:
? 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