¿Cómo saber si alguien desprotege una hoja EXCEL?

Hola Abraham, hace unos días hice esta pregunta y fuiste de gran ayuda con tu respuesta de utilizar un procedimiento que utilizara la función Intersect (para los rangos protegidos) en el evento Worksheet_Change. Sin embargo días después se me ocurrió una buena solución que me gustaría compartirte:
La idea radica en que cuando la hoja está protegida con mi clave, si por medio de mi código intento desproteger la hoja con el método Unprotect dando como Passord una clave que no es la correcta, se producirá un error, lo cual no pasará si la hoja está desprotegida ya que el método Unprotect no realiza ninguna acción en este caso. Entonces con un procedimiento de la siguiente forma puedo registrar en una celda de nombre "desprotegida" que en principio está en FALSO el momento en que el usuario desprotege la hoja:
Private Sub desproteger()
On Error GoTo salir
planilla.Unprotect Password:=""
Range("desprotegida").Value = True
salir:
End Sub
y en el evento Worksheet_SelectionChange:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call desproteger
End Sub
Por otra parte me gustaría que me ayudaras nuevamente con el tema de impedir que el usuario inhabilite los macros mediante el botón "Modo de Diseño", ya que la soución que me diste no se puede implementar en EXCEL 2007. Se que debe hacerse diferente ya que en 2007 se debe utilizar el "Ribbon" y código en XML pero la verdad no se como hacerlo. ¿Me puedes echar una mano?
Gracias nuevamente.

1 Respuesta

Respuesta
1
Pues si la solución que propones te sirve realmente, listo, esta bien.
Sobre lo de inhabilitar un botón de la cinta de opciones de Excel 2007, pues, realmente es trabajoso, y sin lugar a dudas hay que usar XML, por lo que te recomiendo empezar visitando esta página:
Página
Abraham

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas