En este artículo 16 secciones
- Tipos de protección en Excel.
- Desproteger una hoja o el libro sin macros.
- Macro para desproteger una hoja.
- Macro para desproteger todas las hojas del libro.
- Macro para desproteger la estructura del libro.
- Si se olvidó la contraseña.
- Descargar los ejemplos.
- Macros de ejemplo.
- Preguntas frecuentes.
- Artículos relacionados
Excel permite proteger una hoja para que no se modifiquen sus celdas, y proteger la estructura del libro para que no se agreguen, eliminen o muevan hojas. Ambas protecciones se quitan desde la pestaña «Revisar», y con una macro pueden quitarse o ponerse en todas las hojas a la vez, siempre que se conozca la contraseña. ¿Cómo se escriben esas macros y qué diferencia hay entre cada tipo de protección?
Tipos de protección en Excel.
Hay tres niveles de protección, que se configuran en lugares distintos y protegen cosas distintas:
| Protección | Qué impide | Dónde se activa |
|---|---|---|
| De la hoja | Modificar las celdas bloqueadas, cambiar formatos, insertar filas, según las opciones elegidas. | «Revisar», «Proteger hoja» |
| De la estructura del libro | Insertar, eliminar, mover, ocultar, mostrar o cambiar el nombre de las hojas. | «Revisar», «Proteger libro» |
| Contraseña de apertura | Abrir el archivo sin la contraseña. El archivo se cifra. | «Archivo», «Información», «Proteger libro», «Cifrar con contraseña» |
Las dos primeras están pensadas para evitar cambios por error, no para proteger información confidencial: no impiden ver las celdas visibles ni copiarlas. Solo la contraseña de apertura cifra el archivo, y si se pierde, no hay forma práctica de recuperarlo.
- Guía de propiedad horizontal
- Liquidador de renta personas naturales
- Proyección y planeación pensional
Desproteger una hoja o el libro sin macros.
Para quitar la protección de una hoja se va a «Revisar», «Desproteger hoja», y se escribe la contraseña si la tiene. Para quitar la protección de la estructura, «Revisar», «Proteger libro», que funciona como un interruptor, y se escribe la contraseña.
Mientras la estructura del libro está protegida, la opción para mostrar hojas ocultas aparece desactivada, como se explica en el artículo sobre cómo mostrar hojas ocultas en Excel.
Macro para desproteger una hoja.
Las macros se escriben en el editor de Visual Basic, que se abre con Alt + F11; allí se elige «Insertar», «Módulo» y se pega el código. Para desproteger la hoja activa con su contraseña:
Sub DesprotegerHojaActiva()
ActiveSheet.Unprotect Password:="clave"
End Sub
Se reemplaza «clave» por la contraseña real. Si la hoja no tiene contraseña, basta con ActiveSheet.Unprotect. Si la contraseña es incorrecta, la macro se detiene con un error.
Macro para desproteger todas las hojas del libro.
Cuando un libro tiene muchas hojas protegidas con la misma contraseña, una macro las recorre todas:
Sub DesprotegerTodasLasHojas()
Dim hoja As Worksheet
For Each hoja In ThisWorkbook.Worksheets
hoja.Unprotect Password:="clave"
Next hoja
End Sub
Y la macro inversa, para volver a protegerlas todas:
Sub ProtegerTodasLasHojas()
Dim hoja As Worksheet
For Each hoja In ThisWorkbook.Worksheets
hoja.Protect Password:="clave"
Next hoja
End Sub
La versión del archivo descargable pide la contraseña al ejecutar la macro, en lugar de dejarla escrita en el código, y avisa qué hojas no pudieron desprotegerse si alguna tiene una contraseña distinta.
Macro para desproteger la estructura del libro.
La protección de la estructura se quita con el método Unprotect del libro:
Sub DesprotegerLibro()
ThisWorkbook.Unprotect Password:="clave"
End Sub
ThisWorkbook es el libro que contiene la macro. Para proteger de nuevo la estructura: ThisWorkbook.Protect Password:="clave", Structure:=True.
Proteger la hoja y permitir que las macros la modifiquen.
Un uso frecuente es mantener las hojas protegidas para el usuario pero permitir que las macros escriban en ellas. Para eso se protege con el argumento UserInterfaceOnly:
hoja.Protect Password:="clave", UserInterfaceOnly:=True
Esta opción no se guarda con el archivo, de modo que conviene ejecutarla al abrir el libro, desde el evento Workbook_Open.
Si se olvidó la contraseña.
Las macros de este artículo funcionan cuando se conoce la contraseña. Si se olvidó, las opciones legítimas son pedirla a quien protegió el archivo, recuperar una versión anterior sin protección, desde las copias de seguridad o el historial de versiones de OneDrive o SharePoint, o reconstruir la hoja a partir de los datos visibles, que la protección no impide copiar.
De acuerdo con nuestro criterio, para información que realmente debe resguardarse no basta con proteger las hojas: hay que usar la contraseña de apertura y controlar quién tiene acceso al archivo.
Descargar los ejemplos.
El libro de práctica tiene tres hojas y la estructura protegidas con la contraseña «gerencie». Descargar archivo.
Macros de ejemplo.
Private Const CLAVE As String = ""
Private Function PedirClave() As String
If CLAVE <> "" Then
PedirClave = CLAVE
Else
PedirClave = InputBox("Escriba la contraseña (déjela vacía si no tiene):", "Contraseña")
End If
End Function
Sub DesprotegerHojaActiva()
On Error GoTo Fallo
ActiveSheet.Unprotect Password:=PedirClave()
MsgBox "La hoja " & ActiveSheet.Name & " quedó desprotegida."
Exit Sub
Fallo:
MsgBox "No fue posible desproteger la hoja: la contraseña no es correcta."
End Sub
Sub DesprotegerTodasLasHojas()
Dim hoja As Worksheet, clave As String, fallidas As String
clave = PedirClave()
For Each hoja In ThisWorkbook.Worksheets
On Error Resume Next
hoja.Unprotect Password:=clave
If hoja.ProtectContents Then fallidas = fallidas & vbCrLf & hoja.Name
On Error GoTo 0
Next hoja
If fallidas = "" Then
MsgBox "Todas las hojas quedaron desprotegidas."
Else
MsgBox "No se pudieron desproteger estas hojas (contraseña distinta):" & fallidas
End If
End Sub
Sub ProtegerTodasLasHojas()
Dim hoja As Worksheet, clave As String
clave = PedirClave()
For Each hoja In ThisWorkbook.Worksheets
hoja.Protect Password:=clave
Next hoja
MsgBox "Todas las hojas quedaron protegidas."
End Sub
Sub DesprotegerLibro()
On Error GoTo Fallo
ThisWorkbook.Unprotect Password:=PedirClave()
MsgBox "La estructura del libro quedó desprotegida."
Exit Sub
Fallo:
MsgBox "No fue posible desproteger el libro: la contraseña no es correcta."
End Sub
Sub ProtegerLibro()
ThisWorkbook.Protect Password:=PedirClave(), Structure:=True
MsgBox "La estructura del libro quedó protegida."
End Sub
Preguntas frecuentes.
A continuación respondemos las preguntas frecuentes de nuestros lectores.
¿Cuál es la macro para desproteger una hoja de Excel con contraseña?
ActiveSheet.Unprotect Password:="clave", reemplazando «clave» por la contraseña de la hoja.
¿Cómo desprotejo todas las hojas de un libro a la vez?
Con una macro que recorra las hojas con For Each y aplique Unprotect a cada una, como la de este artículo.
¿Qué diferencia hay entre proteger la hoja y proteger el libro?
Proteger la hoja impide modificar sus celdas; proteger el libro impide agregar, eliminar o mover hojas. La contraseña de apertura, en cambio, impide abrir el archivo.
¿La protección de hoja sirve para guardar información confidencial?
No. Evita cambios por error, pero no impide ver ni copiar las celdas visibles. Para eso se usa la contraseña de apertura.
¿Por qué la macro de desproteger no funciona?
Porque la contraseña es distinta, porque la protección es del libro y no de la hoja, o al revés, o porque las macros están deshabilitadas.