Mostrando entradas con la etiqueta Unprotect. Mostrar todas las entradas
Mostrando entradas con la etiqueta Unprotect. Mostrar todas las entradas

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.