Hoy veremos una pequeña utilidad con la instrucción .ProtectContents, que detecta si la Hoja está o no protegida...
Para completar un poco este método tan sencillo, tomaremos algunas acciones según la respuesta a la pregunta:
1 mostraremos un Mensaje advirtiendo de la situación
2 cambiaremos el color de fondo de la celda B1
3 cambiaremos el color de la pestaña de la hoja
Todo lo asociaremos al evento _Activate de la hoja de trabajo.
Por tanto, en la ventana de código de la hoja que nos interese... asociándolo a un evento _Activate, es decir, cuando activemos la hoja de trabajo (en mi ejemplo la Hoja1):
Podemos comprobar cómo al activar (entrar) en la Hoja1, se dispara el evento y en consecuencia el control con .ProtectContents:
O bien..
Para completar un poco este método tan sencillo, tomaremos algunas acciones según la respuesta a la pregunta:
1 mostraremos un Mensaje advirtiendo de la situación
2 cambiaremos el color de fondo de la celda B1
3 cambiaremos el color de la pestaña de la hoja
Todo lo asociaremos al evento _Activate de la hoja de trabajo.
Por tanto, en la ventana de código de la hoja que nos interese... asociándolo a un evento _Activate, es decir, cuando activemos la hoja de trabajo (en mi ejemplo la Hoja1):
Private Sub Worksheet_Activate() 'comprobamos si la hoja en cuestión tiene activado la protección If Hoja1.ProtectContents = True Then 'en caso afirmativo (está protetida) 'desprotegemos la hoja para realizar las acciones siguientes Hoja1.Unprotect 'la celda B1 la ponemos de color Rojo 'y cambiamos el color de la pestaña de la hoja a Rojo Hoja1.Range("B1").Interior.color = vbRed Hoja1.Tab.color = vbRed 'marcamos un mensaje MsgBox "La Hoja está Protegida." 'finalizamos dejando la hoja protegida.. como estaba Hoja1.Protect Else 'en caso afirmativo (está desprotegida) 'la celda B1 la ponemos de color Verde 'y cambiamos el color de la pestaña de la hoja a Verde Hoja1.Range("B1").Interior.color = vbGreen Hoja1.Tab.color = vbGreen 'marcamos un mensaje MsgBox "La hoja está Desprotegida." End If End Sub
Podemos comprobar cómo al activar (entrar) en la Hoja1, se dispara el evento y en consecuencia el control con .ProtectContents:
O bien..
Hola también podemos saber si un libro está protegido o no? Agradezco tu respuesta.
ResponderEliminarHola David,
Eliminarsi, claro, es posible con un código similar:
Sub Test_Workbook_Protection()
If ActiveWorkbook.ProtectStructure Then
msgbox "libro protegido"
else
msgbox "no protegido"
end if
End Sub
Saludos
¿hay alguna manera para verificar si el proyecto de VBA tiene protección y si se le ha quitado?
ResponderEliminarHola, que tal estás?
Eliminarun placer saludarte igualmente.
Basta que accedas al editor de VB, si está protegido al hacer clic sobre el proyecto te pedirá contraseña
Saludos