Asignar contraseña a macro antes de ejecutar

Buenas, soy principiante en esto de las macros en excel, e logrado crear una macro para bloquear y desbloquear todas las hojas de un libro al mismo tiempo, pero tengo un problema, la macro de desbloqueo se ejecuta sin protección, lo que quiero decir es que necesito que al dar click al botón asignado a la macro "unlock" me pida la contraseña antes de ejecutarse, ya que sin esto, cualquiera puede bloquear y desbloquear el libro y las macro pierde utilidad.

Agradezco la ayuda que me puedan brindar.

Saludos!

1 Respuesta

Respuesta
1

Utiliza el siguiente código

Sub desproteje()
'Por.Dante Amor
    res = InputBox("Introduce la clave", Date & " DESPROTEGER HOJAS")
    If res = "" Then Exit Sub
    If res = "abc" Then
        For Each h In Sheets
            h.Unprotect
        Next
    Else
        MsgBox "La clave introducida es errónea", vbExclamation, Date & " DESPROTEGER HOJAS"
    End If
End Sub

Cambia "abc" por la clave que desees.

Cambia lo siguiente, por tu código para desproteger hojas.

        For Each h In Sheets
            h.Unprotect
        Next

Saludos.Dante Amor

No olvides valorar la respuesta.

Gracias Dante, disculpa mi ignorancia pero no entiendo esta parte:

Cambia lo siguiente, por tu código para desproteger hojas.

        For Each h In Sheets
            h.Unprotect
        Next

Gracias.

Ese código lo puse para desbloquear todas las hojas, pero es un ejemplo mio. En lugar de ese código tienes que poner el código que tu creaste.

Si tienes dudas de cómo poner tu código, entonces pon las macros que tienes para proteger y desproteger las hojas y adapto mi código en tu código.

Gracias, amigo mejor te adjunto el código que estoy utilizando:

Sub DesprotegerHojas()
Dim i As Integer, HojaActual As Integer
Application.ScreenUpdating = False
HojaActual = ActiveSheet.Index
For i = 1 To Sheets.Count
Sheets(i).Select
ActiveSheet.Unprotect "lfcmt5"
Next i
Sheets(HojaActual).Select
Application.ScreenUpdating = True
End Sub

Sub ProtegerHojas()
Dim i As Integer, HojaActual As Integer
Application.ScreenUpdating = False
HojaActual = ActiveSheet.Index
For i = 1 To Sheets.Count
Sheets(i).Select
ActiveSheet.Protect "lfcmt5"
Next i
Sheets(HojaActual).Select
Application.ScreenUpdating = True
End Sub

Agradezco de sobremanera tu ayuda.

Utiliza lo siguiente para proteger las hojas

Sub ProtegerHojas()
'Por.Dante Amor
    For Each h In Sheets
        h.Protect "lfcmt5"
    Next
End Sub

Utiliza los siguiente para desproteger las hojas

Sub DesprotegerHojas()
'Por.Dante Amor
    res = InputBox("Introduce la clave", Date & " DESPROTEGER HOJAS")
    If res = "" Then Exit Sub
    If res = "lfcmt5" Then
        For Each h In Sheets
            h.Unprotect "lfcmt5"
        Next
    Else
        MsgBox "La clave introducida es errónea", vbExclamation, Date & " DESPROTEGER HOJAS"
    End If
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas