Hacer editable una hoja de Excel protegida con contraseña
En ocasiones protegemos hojas de Excel con una contraseña que después olvidamos de forma que, aunque podemos abrir el archivo, no podemos modificarlo. En casos como este existen diferentes métodos para resolver el problema, algunos de ellos usando software de terceros. En este artículo comento un método bastante sencillo que utiliza una macro. Lo he probado en Office 2013, desconozco si funciona en todas las versiones de Office. Este método no muestra la contraseña incluida en el archivo, lo que hace es saltarla para que pueda ser modificado incluso grabando una contraseña nueva.
Nota: desproteger un archivo de Excel del que no eres propietario ni tienes los permisos necesarios es una práctica no recomendable.
En primer lugar abrimos la hoja de Excel que está protegida por la contraseña olvidada. Desde ahí abrimos el Editor de Visual Basic que está en la pestaña Desarrollador:
En el Editor de Visual Basic nos posicionamos en la hoja protegida dentro de la ventana de la izquierda, damos doble clic y se abre a la derecha la ventana en la que se escribe código. En esta ventana pegamos el código que se muestra al final del artículo para crear una macro.
Pusamos el botón Ejecutar para que se ejecute la macro:
Al terminar la ejecución de la macro se muestra una ventana de diálogo que informa de que la contraseña es una serie de caracteres, pulsamos Aceptar sin hacer caso a la contraseña mostrada y ya tenemos la hoja desprotegida y editable:
Código:
Sub Desproteger() Dim a As Integer, b As Integer, c As Integer Dim d As Integer, e As Integer, f As Integer Dim a1 As Integer, a2 As Integer, a3 As Integer Dim a4 As Integer, a5 As Integer, a6 As Integer On Error Resume Next For a = 65 To 66: For b = 65 To 66: For c = 65 To 66 For d = 65 To 66: For e = 65 To 66: For a1 = 65 To 66 For a2 = 65 To 66: For a3 = 65 To 66: For a4 = 65 To 66 For a5 = 65 To 66: For a6 = 65 To 66: For f = 32 To 126 Contraseña = Chr(a) & Chr(b) & Chr(c) & Chr(d) & Chr(e) & Chr(a1) _ & Chr(a2) & Chr(a3) & Chr(a4) & Chr(a5) & Chr(a6) & Chr(f) ActiveSheet.Unprotect Contraseña If ActiveSheet.ProtectContents = False Then MsgBox "La contraseña es:" & vbCr & Contraseña Exit Sub End If Next: Next: Next: Next: Next: Next Next: Next: Next: Next: Next: Next End Sub