VBA Excel - Macro para proteger o desproteger hojas en Excel

14 jul 2020

VBA Excel - Macro para proteger o desproteger hojas en Excel


Cuando realizamos un proyecto en Excel, en algunas ocasiones necesitamos proteger nuestras hojas para que los usuarios no las puedan modificar, esto se vuelve problemático cuando se trata de varias hojas, es por esta razón que les comparto esta macro para proteger hojas.
Macro para proteger o desproteger hojas en Excel

Para proteger una sola hoja: 
Sheets("Hoja1").Protect Password:="Luis Reyes"
o en su defecto haciendo referencia al nombre interno de la hoja:

Hoja1.Protect Password:="Luis Reyes"

Con esto estamos protegiendo nuestra hoja 1

y para desproteger utilizaremos la siguiente macro

Sheets("Hoja1").UnProtect Password:="Luis Reyes"


Hoja1.UnProtect Password:="Luis Reyes" 
 
Con esto estamos desprotegiendo nuestra hoja 1

Para proteger o desproteger todas las hojas tenemos que hacer uso de una macro que nos ayude a recorrer todas las hojas, para lo cual vamos a utilizar la macro que publique en publicaciones pasadas Macro para recorrer todas las hojas de un libro.

1. Abrir el editor Visual Basic para Aplicaciones (VBA).

2. en la cinta de opciones en el menú Insertar… módulo

3. dentro del módulo:
     A) creamos el nombre de nuestra macro:

Sub Proteger_Hojas()  ' desproteger

    B) Declaramos los tipos de variables:

Dim Numero_Hojas As Integer'integer porque es numérico
Dim i As Integer 'integer porque es numérico
   
    C) Contamos las hojas que existen con la instrucción “Worksheets.Count” y lo guadarmos en una variable que llamaremos “Numero_Hojas”:

Numero_Hojas = Worksheets.Count

    D) Creamos un ciclo para recorrer las hojas.

Comenzamos con un For y la variable i y las veces que se va a ejecutar el ciclo lo establecemos con  Numero_Hojas, que es el número de hojas que tenemos
   
For i = 1 To Numero_Hojas

Dentro del ciclo vamos a colocar la instrucción que nos va a proteger o desproteger nuestras hojas.

para proteger: 

.Protect Password:="Luis Reyes"

Para desproteger:

.Unprotect Password:="Luis Reyes"


Cerramos el ciclo con un Next
       
Next i

    E)  Cerramos nuestra macro con un:
End Sub


4. Al final nuestra macro va a quedar de la siguiente manera:

Sub Proteger_Hojas()
Dim Numero_Hojas As Integer
Dim I As Integer 'Establecer Numero_Hojas igual al número de hojas de trabajo en el libro activo
Numero_Hojas = Worksheets.Count
' Comenzado el ciclo
For I = 1 To Numero_Hojas
' Inserta tu código
' La siguiente línea muestra cómo hacer referencia a una hoja dentro de
' el bucle protegiendo la hoja de trabajo en un cuadro de diálogo.
Worksheets(I).Protect Password:="Luis Reyes" 'Cambiar Protect por UnProtect para desproteger
Next I
End Sub

0 comments :

Publicar un comentario