2 maneras de modificar celdas protegidas en Excel, con macros

Como sabemos, cuando queremos proteger una hoja de cálculo en Excel usamos el comando Revisar > Proteger hoja. Este comando nos dará la opción de elegir las acciones que queremos sí pueda realizar un usuario aunque la hoja esté protegida.

Proteger hoja de cálculo con opciones de modificación

Figura 1. Proteger hoja de cálculo con opciones de modificación.

Pero qué pasa cuando tenemos un archivo el cual deseamos que sólo se modifique mediante macros. Para tal acción tenemos dos maneras de modificar las celdas; ambas son mediante macros.

Ver video tutorial

Modificar celdas protegiendo y desprotegiendo

La manera habitual de modificar celdas usando macros es primeramente protegiendo la hoja mediante macro asignando una contraseña. Como lo vemos en la siguiente macro.

Sub Proteger()
'Protegemos la hoja de manera normal
ActiveSheet.Protect Password:="hola"

End Sub

También tenemos una macro para desproteger la hoja.

Sub DesProteger()
'Desprotegemos la hoja de manera normal
ActiveSheet.Unprotect Password:="hola"

End Sub

Y para modificar celdas usamos una macro que primero manda llamar a la macro Desproteger, luego hace las modificaciones necesarias y al final manda a llamar a la macro Proteger.

Sub ModificarCeldasProtegiendo()
'Modificar celdas bloqueadas primero desprotegiendo y luego protegiendo

'Mandamos llamar a la macro DesProteger
Call DesProteger

'Se hacen las modificaciones
ActiveSheet.Range("B1").Value = 6
'...

'Mandamos llamar a la macro Proteger
Call Proteger

End Sub

Modificar celdas sin desprotegerlas

Modificar celdas en Excel con macro sin desprotegerlas

Figura 2. Modificar celdas en Excel con macro sin desprotegerlas.

La manera “ideal” de modificar celdas mediante macros es usando el mismo método Protect, pero usando un parámetro que nos permitirá proteger la hoja, pero sólo la parte de la interface del usuario, permitiendo hacer modificaciones libremente mediante macros. Usaremos el parámetro UserInterfaceOnly.

Sub ProtegerSoloInterfaceUsuario()
'Proteger la hoja sólo en la interface del usuario
'y permitiendo modificar celdas desde VBA
ActiveSheet.Protect Password:="hola", UserInterfaceOnly:=False

End Sub

Ahora bien, usando la macro anterior ya no será necesario proteger y desproteger las celdas cada vez que se requiera modificar.

Sub ModificarSinDesprotegerlas()
'Modificando celdas usando previamente UserInterfaceOnly:=True

'Se hacen las modificaciones
ActiveSheet.Range("B1").Value = 7
'...

End Sub

Descarga el archivo de ejemplo

Descarga las macros usadas en este ejemplo: Modificar celdas protegidas.rar

You may also like...