domingo, 20 de enero de 2013

ELIMINAR LA PROTECCION EN LIBROS Y HOJAS

Sé que existen miles de publicaciones al respecto pero siempre viene bien tenerlas a mano y entender cómo funciona.
Estos dos procedimientos son muy útiles cuando recibimos algún archivo protegido, y no nos comunican la contraseña para poder abrirlo. Sea como fuere, olvido o necesidad, cualquier problema de este tipo podemos solucionarlo gracias a estos dos procedimientos;

Para quitar la protección a un libro utilizaremos este procedimiento:

Sub DesprotegerLibro()
If MsgBox("Realmente desea desproteger el libro actual?", _
vbCritical + vbYesNo + vbDefaultButton2, "DesprotegerLibro") = vbYes Then
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
ActiveWorkbook.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 ActiveWorkbook.ProtectStructure = False And ActiveWorkbook.ProtectWindows = False Then
MsgBox "El libro está ahora desprotegido", vbInformation + vbOKOnly, "DesprotegerLibro"
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End If
End Sub

Para quietar la  protección a una hoja utilizaremos este otro procedimiento:

Sub Quitar_contraseña()
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 "¡Enorabuena!" & vbCr & "Se ha quitado la contraseña:" & vbCr & Contraseña
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub

La única diferencia existente entre los dos procedimientos es la utilización del método Unprotect en los diferentes objetos;
ActiveSheet.Unprotect para desactivar la hoja.
ActiveWorkbook.Unprotect para desactivar el libro.

Este método no tiene efecto si la hoja o el libro no están protegidos.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.