En el tutorial anterior abordamos cómo proteger todas las hojas de un libro de Excel utilizando una macro, una solución idónea para blindar celdas con fórmulas y evitar modificaciones accidentales antes de compartir un archivo con otros usuarios o departamentos.
Sin embargo, cuando llega el momento de auditar los modelos, actualizar las estructuras contables o introducir nuevos bloques de datos, la protección se convierte en un obstáculo. Al igual que ocurre al intentar proteger, Excel deshabilita la opción de Desproteger hoja si intentas seleccionar varias pestañas simultáneamente utilizando la tecla Ctrl.

Tener que desproteger una a una cada pestaña e introducir la contraseña manualmente en cada paso resulta aburrido, ineficiente y propenso a errores. En esta guía te proporcionamos la macro en VBA para desproteger todas las hojas de tu archivo en un solo segundo, incluyendo el control de errores de clave y una versión interactiva mediante ventana emergente.
1. El código básico para desproteger todas las pestañas
Para desproteger las pestañas de golpe, utilizaremos una rutina en Visual Basic que ejecuta el método .Unprotect recorriendo la colección de hojas del libro activo.
Paso 1: Inserción de la macro en el editor VBE
- Abre tu archivo habilitado para macros y presiona la combinación de teclas
Alt + F11para desplegar el editor de Visual Basic para Aplicaciones. - Haz clic derecho sobre tu proyecto en el panel izquierdo (o ve al menú superior) y selecciona Insertar > Módulo.
- Pega la siguiente rutina limpia en el panel de la derecha:
VBA
Sub DesprotegerTodasLasHojas()
'Macro para desproteger de golpe todas las hojas de un libro
Dim wksht As Worksheet
'Gestión de errores: evita que la macro se detenga si una hoja tiene clave diferente
On Error Resume Next
For Each wksht In ActiveWorkbook.Worksheets
'Desprotegemos la hoja aplicando la contraseña configurada
wksht.Unprotect Password:="contraseña"
Next wksht
MsgBox "¡Proceso finalizado! Se han desprotegido las hojas del libro.", vbInformation, "Desprotección Completa"
End Sub

(Nota: En la línea Password:="contraseña" debes sustituir la palabra entre comillas por la clave secreta exacta que utilizaste al proteger la plantilla original).
Paso 2: Guardado del archivo
Recuerda que debes conservar este libro bajo el formato Libro de Excel habilitado para macros (*.xlsm). Si lo guardas como un archivo común de Excel (.xlsx), el módulo de VBA se eliminará de forma irreversible al cerrar el programa.
2. Versión Interactiva Avanzada: Petición de contraseña mediante InputBox
Escribir la contraseña directamente en el código fuente de la macro tiene un inconveniente obvio: si compartes el archivo con un usuario intermedio que sepa presionar Alt + F11, podrá ver la clave escrita en texto plano dentro del módulo.
Para resolver esto y hacer que la herramienta sea mucho más flexible y profesional, podemos modificar la rutina para que despliegue una pequeña ventana emergente solicitando la clave en tiempo real:
VBA
Sub DesprotegerHojasConInputBox()
Dim wksht As Worksheet
Dim ClaveUsuario As String
'Solicitamos la contraseña mediante un cuadro de diálogo emergente
ClaveUsuario = InputBox("Introduce la contraseña para desproteger todas las hojas:", "Desproteger Libro")
'Si el usuario presiona Cancelar o deja el campo vacío, cancelamos el proceso
If ClaveUsuario = "" Then Exit Sub
On Error Resume Next
'Recorremos las pestañas aplicando la clave ingresada
For Each wksht In ActiveWorkbook.Worksheets
wksht.Unprotect Password:=ClaveUsuario
Next wksht
MsgBox "Las hojas coincidentes han sido desprotegidas correctamente.", vbInformation, "Resultado"
End Sub
Con esta variante, el código no almacena ninguna clave estática, lo que te permite utilizar la misma macro de desprotección aunque cambies de contraseña con frecuencia.
Cómo ejecutar la macro y asignarla a un botón flotante
Para poner en marcha la macro existen dos métodos:
Método 1: Ejecución tradicional
- Presiona la combinación de teclado
Alt + F8(o dirígete a la pestaña Programador/Desarrollador > Macros). - Selecciona en la lista el nombre de tu rutina (por ejemplo,
DesprotegerTodasLasHojasoDesprotegerHojasConInputBox). - Haz clic en el botón Ejecutar.

A primera vista la pantalla no realizará ningún movimiento brusco, pero si intentas hacer doble clic en cualquier celda de cualquier hoja, comprobarás que la protección se ha retirado y que puedes editar valores y fórmulas libremente.
Método 2: Asignar la macro a un botón táctil (Recomendado)
Para evitar tener que abrir el panel con Alt + F8 cada vez que necesites trabajar, puedes crear un botón interactivo dentro de tu hoja principal:
- Dirígete a la pestaña Insertar > Ilustraciones > Formas y dibuja un rectángulo con bordes redondeados.
- Haz doble clic sobre la forma y escribe el texto: «Desproteger Hojas».
- Haz clic derecho sobre el borde del rectángulo y selecciona la opción Asignar macro…
- En la lista emergente, selecciona tu rutina
DesprotegerHojasConInputBoxy pulsa Aceptar.
A partir de este momento, con solo hacer un clic sobre ese botón, Excel desplegará la casilla de contraseña y desprotegerá todas las pestañas de tu informe al instante.
Solución de problemas frecuentes al desproteger mediante VBA
Durante la ejecución de scripts de desprotección masiva en libros de trabajo complejos, pueden surgir algunas incidencias comunes:
- ¿Por qué la macro no desprotege alguna pestaña específica? Si el código se ejecuta pero una hoja concreta sigue bloqueada, se debe a que esa pestaña fue protegida manualmente con una contraseña diferente a la configurada en la rutina. La línea
On Error Resume Nextevita que el programa se rompa, saltándose esa hoja y continuando con el resto. - Error de contraseñas olvidadas: Las macros de tipo
.Unprotectno rompen la encriptación de Microsoft; requieren que conozcas la clave original. Si no introduces la clave correcta en el argumentoPassword, Excel no liberará el rango de celdas. - Hojas ocultas y muy ocultas (VeryHidden): A diferencia de la interfaz gráfica tradicional de Excel (que exige mostrar una hoja antes de poder desprotegerla), la macro recorre todo el objeto
Worksheets. Esto significa que desprotegerá también las pestañas que tengas ocultas en segundo plano sin necesidad de volverlas visibles primero.
Deja una respuesta