Si sabe cuál es la contraseña, continúe y abra el documento de Excel. Luego haga clic en Archivo> Guardar como. A la izquierda del botón Guardar hay un pequeño menú desplegable etiquetado como Herramientas. Haga clic en eso y luego haga clic en Opciones generales. Elimine las entradas de contraseña allí y haga clic en Aceptar. Guarda el documento.
Si no sabe cuál es la contraseña, puede usar VBA para encontrarla. Si tuviera que adivinar, su usuario probablemente no usó una contraseña súper segura, por lo que podríamos usar un método de tipo de fuerza bruta para encontrarla. El siguiente código es aproximado, pero me ha ayudado a encontrar una contraseña débil y perdida en varios de los documentos de mis usuarios. Comprueba las contraseñas de cualquier longitud con los caracteres ASCII de 1 a z. Lo llamaría desde la ventana Inmediato y esperaría varios minutos así:
? 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
o algo similar.