............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Ver el tema anterior Ver el tema siguiente Ir abajo

DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Mensaje por GalileoGali el Dom Nov 29, 2009 7:27 pm

Preparé este ADDIN o COMPLEMENTO de Excel
En el Módulo ThisworkBook
Código:
Option Explicit

Sub AddItemToShortcut()
    Dim NewItem1 As CommandBarControl, newitem2 As CommandBarControl
    Set NewItem1 = Application.CommandBars("Cell").Controls.Add(Temporary:=True)
    NewItem1.Caption = "Desproteger Hoja Activa"
    NewItem1.OnAction = "ProteccionHojas.DesbloquearProtecccionHOJA"
    NewItem1.BeginGroup = True
    Set newitem2 = Application.CommandBars("Cell").Controls.Add(Temporary:=True)
    newitem2.Caption = "Desproteger Libro"
    newitem2.OnAction = "ProteccionLIBRO.DesbloquearProtecccionLibro"
    newitem2.BeginGroup = False

End Sub

Sub ResetShortcut()
    On Error Resume Next
    With Application.CommandBars("Cell")
    .Controls("Desproteger Hoja Activa").Delete
    .Controls("Desproteger Libro").Delete
    End With
End Sub

En un Módulo estándar llamado "ABRIR"
Código:
Option Explicit

Private Sub AUTO_Open()
If LCase(Right(ThisWorkbook.Name, 4)) = ".xls" Then Exit Sub
Application.EnableEvents = False
Add_an_Addin
ThisWorkbook.ResetShortcut
ThisWorkbook.AddItemToShortcut
Application.EnableEvents = True
End Sub

Sub Add_an_Addin()
Dim oAddin As AddIn
Dim oTempBk As Workbook
If Application.AddIns("Desbloqueador").Installed = True Then Exit Sub
Set oTempBk = Workbooks.Add
Set oAddin = Application.AddIns.Add(ThisWorkbook.Path & "\Desbloqueador.xla", True)
oAddin.Installed = True
oTempBk.Close
End Sub

En un módulo estándar llamado "ProteccionHojas"

Código:
Option Explicit
Public pass As String
Sub DesbloquearProtecccionHOJA()
Dim i As Integer, j As Integer, k 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
Dim passWSh As String
On Error Resume Next
passWSh = pass
With ActiveSheet
.Unprotect passWSh
If .ProtectContents = False Then
MsgBox "La Hoja Activa ha sido desprotegida"
Exit Sub
End If
End With

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
passWSh = Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
With ActiveSheet
.Unprotect passWSh
If .ProtectContents = False Then
MsgBox "La Hoja Activa ha sido desprotegida"
pass = passWSh
Exit Sub
End If
End With

Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub
En un módulo estándar llamado "ProteccionLibro"

Código:
Option Explicit
Sub DesbloquearProtecccionLibro()
Dim i As Integer, j As Integer, k 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
Dim passWbk As String
On Error Resume Next
passWbk = pass
With ActiveWorkbook
.Unprotect passWbk
If .ProtectStructure = False And .ProtectWindows = False Then
MsgBox .Name & " ha sido DESPROTEGIDO (Libro)", , "Libro Desprotegido"

Exit Sub
End If
End With
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

passWbk = Chr(i) & Chr(j) & Chr(k) & _
Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
With ActiveWorkbook
.Unprotect passWbk
If .ProtectStructure = False And .ProtectWindows = False Then
MsgBox .Name & " ha sido DESPROTEGIDO (Libro)", , "Libro Desprotegido"
pass = passWbk

Exit Sub
End If
End With

Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub
--Guardar el Libro como "Complemento de Excel"
-Instalarlo como "Complemento" (Herramientas >> "Complementos")

a partir de alli, si funciono correctamente, pueden llamar el Menu Contextual de la hoja, haciendo click con el Boton derecho del Mouse sobre cualquier celda, deberian estar agregados dos botones al final del menu
Desproteger hoja Activa
Desproteger Libro


4) haciendo click habra que esperar algun minuto (dependiendo de las condiciones del sistema, para lograr la desproteccion.
5) En el supuesto de que las contraseñas de todas las hojas fueran la misma, las desprotecciones posteriores seran casi inmediatas, Algo similar programe con la del Libro, para agilizar


Última edición por GalileoGali el Sáb Feb 19, 2011 4:42 pm, editado 1 vez

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Mensaje por avalderrama el Dom Jun 13, 2010 3:06 pm

GalileoGaly, muchas gracias, excelente.

Avalderrama

avalderrama

Masculino Cantidad de envíos : 9
Edad : 53
Ciudad - Pais : Medellín - Colombia
Version de Excel : 2003
Fecha de inscripción : 26/12/2009

Volver arriba Ir abajo

Re: DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Mensaje por moises melgar el Lun Jun 21, 2010 1:41 pm

Excelente galileo como siempre demuestras tu poder, puro poder.
Te envio esta macro que cuando se activa te desprotege las hojas protegidas pero solo se limita a eso. he estado lidiando con la protecciones de los libros (ventanas y estructura) no se si se te ocurre una idea o es algo que no se deberia saber y doy por cerrado mi pregunta?????? gracias

Código:
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
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 563
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Mensaje por Milton Cordova el Vie Feb 18, 2011 1:55 am

Saludos, me puedes indicar si esta macro funciona para excel 2003, he relizado una prueba y no funciona. Indicar además si hay que colocarla en módulo o en el ThisWorkbook
Gracias por la ayuda y respuesta
Milton Córdova
[Tienes que estar registrado y conectado para ver este vínculo]

Milton Cordova

Masculino Cantidad de envíos : 24
Edad : 62
Ciudad - Pais : Quito - Ecuador
Version de Excel : 2003
Fecha de inscripción : 31/12/2009

Volver arriba Ir abajo

Re: DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Mensaje por GalileoGali el Vie Feb 18, 2011 7:31 am

Funciona correctamente: Probado!!!

Milton: siempre es preferible colocar esta macro en un módulo estándar

Código:
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


ACLARACION: ESTE CÓDIGO, MUY POPULAR EN LA RED, NO ES DE MI AUTORIA, SIMPLMENTE LO HE RECOPILADO

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Mensaje por Milton Cordova el Vie Feb 18, 2011 1:56 pm

Gracias excelente aporte, tengo una consulta adicional: esta macro solo sirve para desproteger una hoja o varias hojas...?
Porque a mi slo me desbloquea una hoja.
Saludos cordiales y felicitaciones.
Milton Córdova.
[Tienes que estar registrado y conectado para ver este vínculo]

Milton Cordova

Masculino Cantidad de envíos : 24
Edad : 62
Ciudad - Pais : Quito - Ecuador
Version de Excel : 2003
Fecha de inscripción : 31/12/2009

Volver arriba Ir abajo

Re: DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Mensaje por moises melgar el Sáb Feb 19, 2011 1:20 pm

Solo desprotege la hoja donde la estas ejecutando.
Es decir tienes que ir de hoja a hoja ejecutando el codigo
Podriamos usar un bucle que vaya de hoja en hoja ejecutando el codigo
ejemplo
Código:
Sub desprotegertodas()
    For Each s In Sheets
        s.Activate
        Application.Run ("Quitar_contraseña")
    Next s
End Sub

Pero para hacerla seguida se puede eliminar el renglon de
Código:
MsgBox " ¡Enorabuena! " & vbCr & "Se ha quitado la contraseña:" & vbCr & Contraseña
y el codigo parara hasta haverle quitado la contraseñas a todas las hojas del libro
Ese renglon es el encargado de relizar una opcion al final de codigo y contrasena es la contraseña de la hoja
entonces para colocar la contraseña de cada hoja en una celda de su respectiva hoja, en el renglon antes mencionado colocaremos:
Código:
ActiveSheet.Range("A1").Value = Contraseña
Donde logicamente "A1" es la celda donde colocara la contraseña obtenida
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 563
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Mensaje por GalileoGali el Sáb Feb 19, 2011 4:48 pm

En el primer post de este Hilo; exhibo el código del Addin o complemento de Excel que incorpora al menu contextual (click derecho del mouse sobre cualquier celda de la hoja) para Desproteger el Libro o cada hoja. Una vez detectada la contraseña de la primera hoja desprotegida, intena con la última que encontro "buena" ya que la mayoría de los usuarios protegen con la misma clave todas las hojas,, con lo cual abrevia el tiempo de Desproteger las siguientes.

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: DESPROTEGER HOJA - DESPROTEGER LIBRO (no apertura)

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.