domingo, 16 de octubre de 2022

65 - Protección de Hojas

 Los libros Excel cuentan con varios métodos de protección: 

- Con contraseña de apertura 

- Con contraseña de escritura

Estas dos opciones se pueden establecer al momento del Guardado, botón Herramientas, Opciones Generales. Se pueden establecer las dos contraseñas, una o ninguna.

Una vez abierto el libro podemos encontrar en el menú Revisar, grupo Proteger, las siguientes opciones:

- Protección de Hojas: Con contraseña o no y con diferentes permisos. La protección es por cada hoja, de modo individual.

- Protección de Libro: esta opción permite impedir el cambio en la estructura del libro: agregar o quitar hojas, ocultarlas y mostrarlas, cambiar de nombre o de ubicación. La contraseña es opcional.

Al presionar el botón Protección de libro, nos encontraremos con una ventana conteniendo varias opciones que podemos tildar o no. El tildado significa que será posible realizar esa tarea en una hoja protegida. Según la imagen solo se podrán seleccionar las celdas desbloqueadas.


Para trabajar de modo correcto con una hoja alimentada desde un Userform, debemos establecer cuáles serán las celdas bloqueadas y cuáles no. Y recién entonces proceder a la protección de la hoja.
Como la hoja Excel presenta de modo predeterminado todas las celdas bloqueadas, podemos cambiar este estado desde menú Inicio, Formato, Formato de celdas, Proteger y quitar el tilde a la opción de bloqueo.

Por ejemplo, encabezados, títulos y fórmulas debieran estar bloqueadas (menú Inicio, Formato, Formato de Celdas, Proteger y tildar la opción de Bloqueo. En el caso de fórmulas, también podemos tildar la opción 'Ocultar' para que no se muestren en la barra de fórmulas.)

El resto de la hoja, donde irán los datos debemos dejarlas desbloqueadas. Salvo que necesitemos impedir que se hagan cambios una vez completado el registro.

Si la hoja presenta Botones u objetos como imágenes, la opción 'Modificar Objetos' debiera quedar sin tilde para evitar el cambio accidental de estos objetos.

Si vamos a permitir (o se tildar) la opción de Autofiltro, debemos ya tenerlo aplicado en el rango de títulos antes de la protección.

Para desproteger/proteger una hoja mediante VBA, utilizaremos los métodos Unprotect y Protect.
Ejemplo 1:
Sub quitaProteccion()    
 'en este ejemplo se desprotege la hoja activa (no tiene clave) y se la protege con clave.
ActiveSheet.Unprotect
ActiveSheet.Protect "12345"
End Sub


Ejemplo 2:  Solo se seleccionarán las celdas desbloqueadas.

 Sub SeleccionaDesbloqueadas() 

ActiveSheet.Protect "12345", DrawingObjects:=True, Contents:=True, Scenarios:=True

'impide la selección de celdas bloqueadas

ActiveSheet.EnableSelection = xlUnlockedCells 

End Sub


Ejemplo 3:  Con permisos para formato de columnas y filas, Orden y Autofiltro.

Sub Permisos()

ActiveSheet.Protect "12345", DrawingObjects:=True, Contents:=True, Scenarios:=False _

AllowFormattingColumns:=True, AllowFormattingRows:=True, _

        AllowSorting:=True, AllowFiltering:=True

End Sub


Ejemplo 4:  En una hoja totalmente bloqueada, la macro desbloquea aquellas celdas sin color o con un color determinado.
Sub desbloqueaBlancas()
'La hoja se encuentra bloqueada en su totalidad.
'la macro permite desbloquear aquellas celdas sin color para el ingreso de datos.
'el rango a recorrer es de fila 1 a 36 y columna 2 hasta 30 (B1:AD36)
Dim i As Integer, j As Integer
On Error Resume Next
For i = 1 To 36
    For j = 2 To 30
        If Cells(i, j).Interior.Color = 16777215 Then
            Cells(i, j).Locked = False
        Else
            Cells(i, j).Locked = True
        End If
    Next j
Next i
MsgBox "Fin del proceso."
End Sub


Ver video N° 65 - Protección de hojas desde aquí.

Ver video N° 37 - Protección de libro y hojas Excel. 

Ver lista completa de videos desde aquí.