Cuando trabajamos con cuadernos de mando complejos, presupuestos anuales o modelos financieros que contienen decenas de pestañas, garantizar la seguridad de la información es prioritario. Si compartimos el archivo con otros departamentos o clientes, es crucial bloquear las celdas con fórmulas para evitar que alguien altere la lógica de cálculo por accidente.
Sin embargo, Excel tiene una limitación molesta: no permite proteger múltiples hojas a la vez de forma nativa. Si seleccionas varias pestañas agrupándolas con la tecla Ctrl, comprobarás que en la cinta de opciones la función de Proteger hoja se deshabilita por completo.

Ir hoja por hoja activando la protección manual puede llevarte mucho tiempo y generar errores si te olvidas de alguna pestaña. En esta guía te proporcionamos las macros definitivas en VBA para proteger y desproteger todas las hojas de tu libro en un solo clic, incluyendo opciones avanzadas con contraseña interactiva.
1. Macro básica para proteger todas las hojas automáticamente
Para automatizar este proceso, utilizaremos un bucle en Visual Basic que recorrerá cada una de las pestañas activas en el libro y les aplicará la clave de seguridad definida.
Paso 1: Inserción del código en el editor VBE
- Abre tu libro de trabajo y presiona la combinación de teclas
Alt + F11para abrir el editor de Visual Basic. - En el menú superior, haz clic en Insertar > Módulo.
- Copia y pega el siguiente código en la pantalla blanca central:
VBA
Sub ProtegerTodasLasHojas()
'Macro para proteger todas las hojas de un libro automáticamente
Dim wksht As Worksheet
'Recorremos cada hoja del libro activo
For Each wksht In ActiveWorkbook.Worksheets
'Aplicamos la protección con contraseña
wksht.Protect Password:="contraseña"
Next wksht
MsgBox "¡Todas las hojas han sido protegidas correctamente!", vbInformation, "Éxito"
End Sub

(Nota: En este ejemplo hemos definido la clave "contraseña". Puedes cambiar el texto entre comillas por la clave secreta que tú elijas).
Paso 2: Guardado del archivo
Al contener código de programación, recuerda que debes hacer clic en Guardar como y seleccionar el tipo de documento Libro de Excel habilitado para macros (*.xlsm) para no perder tus rutinas al cerrar el programa.


2. Macro para desproteger todas las hojas de golpe
Si necesitas hacer modificaciones masivas en tus plantillas o actualizar formulas en varias pestañas, desprotegerlas una a una desde el menú Revisar > Desproteger hoja e introducir la clave en cada pestaña resulta aburrido y poco eficiente.
Para revertir el proceso al instante, añade esta segunda macro a tu Módulo de VBA:
VBA
Sub DesprotegerTodasLasHojas()
'Macro para desproteger todas las hojas del libro activo
Dim wksht As Worksheet
On Error Resume Next 'Evita que el programa se detenga si la clave es incorrecta
For Each wksht In ActiveWorkbook.Worksheets
'Retiramos la protección usando la clave configurada
wksht.Unprotect Password:="contraseña"
Next wksht
MsgBox "¡Todas las hojas han sido desprotegidas!", vbInformation, "Proceso Completado"
End Sub
3. Versión Avanzada e Interactiva: Petición de contraseña mediante InputBox
Tener la contraseña escrita a fuego dentro del código del módulo (Password:="contraseña") tiene un inconveniente: si un usuario con conocimientos básicos presiona Alt + F11, podrá ver la clave escrita en texto plano dentro de la macro.
Para solucionar esto y aportar un salto de calidad profesional a tus herramientas de trabajo, podemos hacer que la macro despliegue un cuadro emergente pidiéndote la contraseña en tiempo real antes de ejecutar la acción:
VBA
Sub ProtegerHojasInteractivas()
Dim wksht As Worksheet
Dim MiClave As String
'Solicitamos la clave al usuario mediante una ventana emergente
MiClave = InputBox("Introduce la contraseña para proteger todas las hojas:", "Seguridad de la Hoja")
'Si el usuario cancela o deja el cuadro vacío, cancelamos la operación
If MiClave = "" Then Exit Sub
For Each wksht In ActiveWorkbook.Worksheets
wksht.Protect Password:=MiClave
Next wksht
MsgBox "Protección aplicada con éxito en todo el libro.", vbInformation, "Atención"
End Sub
Con este método, la clave nunca queda guardada de forma rígida dentro del código, ofreciendo flexibilidad absoluta para que cambies de contraseña cuando lo necesites sin modificar el script de programación.
Cómo ejecutar las macros en tu día a día
Una vez creadas las rutinas dentro del módulo, ponerlas en marcha es facilísimo:
- Presiona la combinación de teclas
Alt + F8(o dirígete a la pestaña Programador/Desarrollador > Macros). - Selecciona la rutina que deseas activar (por ejemplo,
ProtegerTodasLasHojasoDesprotegerTodasLasHojas). - Haz clic en el botón Ejecutar.

Visualmente la pantalla no parpadeará, pero al intentar hacer doble clic sobre cualquier celda para editar su contenido, Excel bloqueará la acción y desplegará el aviso oficial indicando que la hoja se encuentra protegida contra escritura.
Consideraciones técnicas y errores habituales
Para garantizar que la macro se ejecute sin contratiempos en tus modelos financieros, ten en cuenta las siguientes recomendaciones de auditoría:
- Hojas muy ocultas (VeryHidden): Las macros basadas en el bucle
For Each wksht In ActiveWorkbook.Worksheetsprotegerán y desprotegerán todas las pestañas sin importar su nivel de visibilidad, garantizando que no queden datos expuestos en segundo plano. - Proteger la estructura global del libro: Recuerda que la propiedad
wksht.Protectbloquea el contenido de las celdas dentro de la hoja, pero no impide que un usuario haga clic derecho sobre la pestaña inferior y la elimine o cambie su nombre. Para blindar los nombres y el orden de las pestañas, combina esta solución con el menú Revisar > Proteger libro (Estructura y ventanas). - Gestión de claves olvidadas: Asegúrate de guardar la contraseña en un gestor seguro de credenciales. Si proteges un libro entero con una clave compleja mediante VBA y se te olvida, las funciones de recuperación nativas de Excel son limitadas.
Deja una respuesta