miércoles, agosto 11, 2010

Truco para desproteger una hoja de un libro de excel

Resulta que a muchos nos ha ocurrido que por algún motivo guardamos un libro de Excel con una o más hojas protegidas y olvidamos la contraseña al momento de requerir alguna modificación.

Pues resulta que se puede desproteger la hoja mediante la ejecución del código indicado más adelante, el cual determina un password (contraseña) válido para desproteger la hoja, aunque no corresponde con la contraseña fijada inicialmente, es válido y, por tanto, deja desprotegida la hoja que así se requiere.

Los pasos a seguir son:

1)     Copiar el código dispuestos adelante y pegarlo en un módulo cualquiera del mismo libro, con ayuda del editor de Visual Basic (ALT+F11 para abrir el editor).

2)     Cerrar el editor de Visual Basic y ubicarse en la hoja a desproteger

3)     Ejecutar la macro breakit (ALT+F8 para desplegar la lista de macros, seleccionarla y dar clic en el botón ejecutar).

4)     Ejecutada la macro aparecerá un mensaje indicando una contraseña equivalente se da clic en el botón aceptar y la hoja quedará desprotegida.

Lo he probado con la versión de Excel 2007 y me ha funcionado adecuadamente.

El código a copiar en el módulo es:



Sub breakit()



   Dim i As Integer, j As Integer, k As Integer

   Dim l As Integer, m As Integer, n As Integer

   On Error Resume Next

     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

      MsgBox "One usable password is " & Chr(i) & Chr(j) & _

         Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) _

         & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

      Exit Sub

   End If

               Next

              Next

             Next

            Next

           Next

          Next

         Next

        Next

       Next

      Next

     Next

    Next





End Sub




No hay comentarios:

Publicar un comentario