Proteger un libro en Excel con VBA

Proteger un libro en Excel con VBA es una tarea relativamente habitual para los que trabajamos con este tipo de archivos y con clientes frecuentemente.

Los motivos pueden ser varios:

  • Proteger la copia de las celdas del archivo
  • Evitar la modificación de ciertas celdas
  • Evitar la modificación de las fórmulas
  • Evitar que se modifique la estructura (añadir o quitar hojas) del libro

Un un montón de motivos más tan variopintos que debería haber una web solo para listarlos.

El caso es que para proteger un libro de Excel el código que se necesita es muy breve.

Desarrollar el código

El código que a continuación se presenta está orientado sólo a proteger la estructura de un libro de Excel sin más.

[codesyntax lang=”vb” lines=”no” container=”pre” blockstate=”expanded” doclinks=”0″]

Sub Proteger()
    On Error GoTo fin
        ActiveWorkbook.Protect ("ExcelyVba")
fin:
End Sub

[/codesyntax]

Esta pequeña macro nos permite proteger el libro para que nadie pueda eliminar o crear hojas mediante la contraseña “ExcelyVBA” que si dejamos vacío también lo protegerá pero para desprotegerlo simpelmente habrá que ir al botón de Revisar >> Proteger Libro y hacer click sobre el mismo.

Código para proteger el libro y todas sus hojas

Este código es un pelín más complejo y requiere unas mínimas nociones de VBA. Para conocer este código necesitas saber de declaración de variables (ver más), un poco de el bucle For Each (ver más) y de propiedades de las hojas de un libro.

[codesyntax lang=”vb” lines=”no” container=”pre”]

Sub Proteger()
    On Error GoTo fin
    Dim sht As Worksheet
    Application.ScreenUpdating = False
        ActiveWorkbook.Protect ("ExcelyVBA")
        For Each sht In ActiveWorkbook.Worksheets
            If sht.Visible = True Then
                sht.Protect ("ExcelyVBA")
            End If
        Next
fin:
End Sub

[/codesyntax]

Como puede verse, sobre el código de proteger al libro hemos añadido unas poquitas líneas en las que usamos la propiedad Visible de cada hoja para discriminar las hojas que queremos proteger y luego añadimos la propiedad Protect a la hoja con una contraseña.

(Visited 25.832 times, 1 visits today)
Categorías VBA

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies