martes, 12 de abril de 2016

Proteger varias hojas de un libro en Excel con VBA


Hoy tuve que dictar una clase de Excel Avanzado, y una alumna me indicó que tiene un libro de Excel con 20 hojas, que necesitaba enviarlo por correo electrónico pero con todas las hojas protegidas, y realizar ese proceso es muy tedioso si se empieza a proteger una por una. Así que buscamos la forma de realizarlo automáticamente.
Ante esto debemos tener en cuenta que para proteger una hoja se debe ir a la etiqueta Revisar, Proteger Hoja.

Sin embargo, podemos crear un proceso en VBA (Visual Basic for Application) para ello seguimos los siguientes pasos:
1. Presionamos ALT + F11 para ingresar al Visual Basic.

2. Estando en Visual Basic vamos al menú Insertar, Módulo


3. Copiamos el siguiente código:

Sub ProtegeHoja()

'Se activa con CTRL SHIFT P

For Each Hoja In ActiveWorkbook.Sheets

    Hoja.Protect "12345"

Next Hoja

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub DesProtegeHoja()

'Se activa con CTRL SHIFT U

For Each Hoja In ActiveWorkbook.Sheets

    Hoja.Unprotect "12345"

Next Hoja

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

En el paso anterior hemos creado 2 procesos (Macros) uno que Protege las hojas y le coloca como contraseña "1234"; y otro proceso que desprotege las hojas.

4. Ahora regresamos al Excel, y en la etiqueta Vista, Macros, Ver Macros (También se activa con ALT + F8), seleccionamos la Macros ProtegeHoja y presionamos el botón Opciones



Luego colocamos una P mayúscula en la Tecla de método abreviado.


Realizamos el mismo proceso con DesProtegeHoja pero colocaremos una U mayúscula.

5. Finalmente cada vez que presionemos en nuestro archivo CTRL SHIFT P se bloquearan todas las hojas, y cada vez que presionemos CTRL SHIFT U se desbloquearan todas las hojas.

Espero que les sirva: