Proteger y desproteger varias hojas en Excel usando macros: VBA Tips

Proteger y desproteger varias hojas en Excel usando macros - VBA Tips

En este tutorial te mostraré un par de macros que nos servirán para Proteger y Desproteger todas las hojas en un archivo de Excel, usando macros. Para proteger y desproteger hojas en Excel sin usar macros sólo deberás ir a la pestaña Revisar > Proteger hoja.

Proteger hojas usando el método Protect

Usaremos la función InputBox para pedir la contraseña que deseamos usar para desproteger las hojas.

Usando InputBox pedimos la contraseña para desproteger las hojas.

Figura 1. Usando InputBox pedimos la contraseña para desproteger las hojas.

Ver video Proteger hojas en Excel usando macros VBA

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Con el ciclo For Next recorremos todas las hojas del archivo y las protegemos con la contraseña que ingresamos en el InputBox.

En caso de que alguna hoja se encuentre previamente protegida, la macro mostrará un mensaje con el nombre de aquellas hojas que ya estaban protegidas.

Se muestran los hombres de las hojas que ya estaban protegidas.

Figura 2. Se muestran los hombres de las hojas que ya estaban protegidas.

Código VBA de la macro Proteger

Abrimos el IDE de Visual Basic para Aplicaciones e insertamos un Módulo nuevo yendo a menú Insertar > Módulo.

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
Sub Proteger()

Pass = InputBox("Ingresa la contraseña para proteger las hojas", "EXCELeINFO")

For Each Hoja In ThisWorkbook.Sheets
    
    nHoja = Hoja.Name
    
    If Hoja.ProtectContents = True Then
        CuentaErrores = CuentaErrores + 1
        nHoja2 = nHoja2 & vbNewLine & "> " & nHoja
    Else
    End If
    
    Hoja.Protect Password:=Pass

Next Hoja

If CuentaErrores >= 1 Then
MsgBox "La siguientes hojas no se pudieron proteger porque ya estaban protegidas" & vbNewLine & nHoja2, vbExclamation, "EXCELeINFO"
End If

End Sub

Desproteger hojas usando el método Unprotect

Para esta macro usaremos también la función InputBox para solicitar ahora la contraseña que usaremos para desproteger las hojas. De la misma manera usaremos el ciclo For Each para recorrer todas las hojas y desprotegerlas asignando la contraseña proporcionada.

En caso de alguna hoja no se pueda desproteger con la contraseña proporcionada, se mostrará un mensaje indicando las hojas que no se pudieron desproteger.

Se muestra un mensaje con las hojas que no se pudieron desproteger.

Figura 3. Se muestra un mensaje con las hojas que no se pudieron desproteger.

Código VBA de la macro Desproteger

Este código lo insertamos en el Módulo 1 que se creó anteriormente.

Sub Desproteger()

Pass = InputBox("Ingresa la contraseña para Desproteger las hojas", "EXCELeINFO")

For Each Hoja In ThisWorkbook.Sheets
    
    On Error Resume Next
    
    nHoja = Hoja.Name
    
    Hoja.Unprotect Password:=Pass
    
    If Err.Number = 1004 Then
        CuentaErrores = CuentaErrores + 1
        If Hoja.ProtectContents = True Then
            nHoja2 = nHoja2 & vbNewLine & "> " & nHoja
        Else
        End If
    End If

Next Hoja

If CuentaErrores >= 1 Then
MsgBox "La siguientes hojas no se pudieron desproteger, valida la contraseña." & vbNewLine & nHoja2, vbExclamation, "EXCELeINFO"
End If

End Sub

Descarga el archivo de ejemplo

Proteger y desproteger varias hojas en Excel usando macros – VBA Tips – EXCELeINFO.zip

 

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

También te podría gustar...