Con esta simple macro es posible desproteger hojas y/o libros de Excel, mediante la llamada al procedimiento correspondiente.-
Al utilizar el siguiente código es de importancia considerar que la ejecución del mismo demandará gran cantidad de los recursos del sistema, y el tiempo del proceso dependerá de la complejidad de la contraseña asignada a la hoja y/o libro.-
Código válido para Excel 2000, 2003 y 2007 (es posible que funcione en otras versiones).-
Código VB:
Sub DesprotegerHoja()
If MsgBox("Realmente desea desproteger la hoja actual?", vbCritical + vbYesNo + vbDefaultButton2, "DesprotegerHoja") = 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
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 "La clave es: " & Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
MsgBox "La hoja está ahora desprotegida", vbInformation + vbOKOnly, "DesprotegerHoja"
Exit Sub
End If
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
End If
End Sub
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 "La clave es: " & Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
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
3 comentarios:
Super bueno el codigo.
Un millón de gracias.
Sólo necesité la parte para desproteger libro y funcionó muy bien, después de estar horas buscando por lo menos hay algo que realmente funciona.
Lo dicho, muchísimas gracias.
Salu2,
Roberto
Me sorprendió!!!!
Realmente increíble, sin duda el invento más grande después de la penicilina. JAJAJAJA
Saludos.
Estupendo
Me ha ayudado muchísimo
Saludos
Publicar un comentario