Desproteger hoja de Excel con contraseña

En ocasiones se nos olvidan las contraseñas. Esto es tan habitual que siempre viene bien tenerlas apuntadas en algún sitio pero no siempre lo hacemos :(). En estos casos cunde el pánico, pensamos que ya no podremos usar nuestra hoja de Excel o modificarla pero siempre hay maneras de evitar los problemas…

No es que Excel sea una gran herramienta en cuanto a la seguridad, es verdad que no lo es. Pero es verdad que existen otras maneras de cifrar la información (winzip por ejemplo) mucho más seguras. En otro artículo ya hemos visto como proteger una libro de Excel y te recomiendo que le eches un vistazo para entender bien de qué estamos hablando.desproteger hoja de Excel

En este post os vamos a explicar como desproteger todas las hojas protegidas de un libro de Excel.

Desproteger hoja de Excel

Para desproteger una hoja de de Excel necesitaremos un poco de paciencia (para copiar el código y pegarlo en la ventana de VBA) y para ejecutar la macro. Puede tardar unos 20 segundos así que la paciencia no es tanta.

El código que os presentamos no averigua la contraseña de la hoja en cuestión (o de las hojas) sino que es mucho más sencillo y mucho más complejo… todas las hojas, al ponerlas con contraseña, tienen un código de 12 dígitos formado por una cadena de A y B de 11 caracteres más un caracter adicional al final.

Nuestra macro irá recorriendo todas las posibilidades de contraseña (que parecen muchas pero no son tantas) hasta que encuentre una que resuelva el problema.

Esta macro está pensada para recorrer todas las hojas del libro y que pueda, de un solo golpe, hacer visibles y desproteger todas las hojas.

La macro en cuestión es la siguiente:

Sub Desproteger_hojas()

        Dim i As Integer, j As Integer, k As Integer, sht As Integer
        Dim l As Integer, m As Integer, n As Integer
        Dim i1 As Integer, i2 As Integer, i3 As Integer
        Dim i4 As Integer, i5 As Integer, i6 As Integer
            
    For sht = 1 To Sheets.Count
        Sheets(sht).Visible = True
        Sheets(sht).Activate
    
        For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
        For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
        For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
        For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
            ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
                Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
                Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
            If ActiveSheet.ProtectContents = False Then
                 GoTo siguiente
            End If
        Next: Next: Next: Next: Next: Next
        Next: Next: Next: Next: Next: Next
        
siguiente:
    Next
End Sub

Hay un gran número de bucles FOR anidados en esta macro pero no hay que asustarse, todos menos el primero se dedican a la búsqueda de la contraseña y el primero se dedica a recorrer todas las hojas del libro una a una, hacerlas visibles y activarlas.

Cómo usar este código

Para usar este código puedes visitar el post de cómo crear una macro en VBA. Es muy sencillo y se tarda muy poquito tiempo.

(Visited 195.962 times, 1 visits today)

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies