¿cómo proteger un libro con vba?
Para proteger un libro de trabajo, debe utilizar el método PROTECT de VBA. Con este método, puede usar una contraseña o incluso habilitar la protección del libro sin contraseña. Pero hay una cosa que debes tener en cuenta para la contraseña que utilices, que distingue entre mayúsculas y minúsculas.
Workbook.Protect "Password"
- Especifique el libro que desea proteger.
- Toque, apunte y seleccione el método de protección de la lista o puede tocar «Proteger».
- Ingrese la contraseña que desea establecer.
- Ejecute el código para proteger el libro.
En este tutorial, aprenderemos este método de diferentes maneras y también aprenderemos cómo desproteger un libro.
Enlaces útiles: Ejecutar una macro – Grabador de macros – Editor de Visual Basic – Manual de macros personales
Proteger un libro con una contraseña
A continuación se muestra el código que necesita utilizar para proteger con contraseña un libro de trabajo. En este código, primero tiene el nombre del libro y el método de protección con contraseña.
Workbooks("Book1").Protect "test123"
Y cuando ejecuto este código, bloquea el libro «Libro1».
Proteger un libro sin contraseña
Y si desea proteger un libro sin contraseña, debe ignorar el argumento «Contraseña», como en el siguiente código.
Workbooks("Book1").Protect
Si intenta proteger un libro sin contraseña que ya está protegido con contraseña, Excel mostrará un cuadro de diálogo para ingresar esa contraseña.
Desproteger un libro con una contraseña
De la misma manera, puede usar el método de desprotección para desproteger el libro de trabajo y el código se vería así a continuación.
Workbooks("Book1").Unprotect "test123"
Hay una cosa de la que debe ocuparse si intenta desproteger un libro de trabajo que no está
Desproteger un libro sin contraseña
Y si un libro está protegido sin contraseña, puede usar el mismo método sin especificar el argumento de contraseña.
Proteger todos los libros abiertos
En el código siguiente, tenemos un bucle FOR CADA para recorrer todos los libros abiertos y proteger cada libro uno por uno utilizando el mismo método de protección.
'variable to use as a workbook Dim wb As Workbook 'loop through all the open workbooks For Each wb In Application.Workbooks 'condition to check workbook name If wb.Name <> "PERSONAL.XLSB" Then 'protect every workbook with a password wb.Protect "test123" End If Next wb End Sub
Como estoy usando el libro de macros personal, utilicé una declaración IF THEN ELSE para ignorar si el nombre del libro es » personal.xlsb «. También asegúrate de cuidarlo.
Proteger un libro cerrado
También puede proteger y desproteger un libro cerrado guardado en una ubicación. Mire el siguiente código donde utilicé la ubicación de mi escritorio para usar el archivo «test.xlsx».
Sub vba_protect_workbook() 'declare varibale to use for the workbook Dim wb As Workbook 'open the workbook that you want to protect Set wb = Workbooks.Open("C:UsersDellDesktoptest.xlsx") 'turn off the screen-updating to _ done everything in the backend Application.ScreenUpdating = False 'protect the workbook wb.Protect 'close the workbook after protecting wb.Close SaveChanges = True 'turn off the screen-updating Application.ScreenUpdating = True End Sub
El código anterior utilizó el método Workbook.Open para abrir el libro que desea proteger y luego deshabilite la actualización de pantalla para que funcione en el backend.
Proteger todos los libros cerrados en una carpeta
El siguiente código recorre todos los libros que se encuentran en la carpeta que especificó como ruta. Y luego abre cada carpeta, protégela y ciérrala una por una.
Sub vba_protect_all_the_workbooks() 'declare variables Dim wb As Workbook Dim myPath As String Dim myFile As String Dim myExtension As String Dim FldrPicker As FileDialog 'optimize macro Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlCalculationManual 'specify the folder where workbooks are saved myPath = "C:UsersDellDesktopfolder" 'jump to reset setting if there's an error On Error GoTo ResetSettings 'target file fxtension (must include wildcard "*") myExtension = "*.xls*" 'target path myFile = Dir(myPath & myExtension) 'Loop through each Excel file in folder Do While myFile <> "" 'Set variable equal to opened workbook Set wb = Workbooks.Open(Filename:=myPath & myFile) 'protect workbook wb.Protect 'Save and Close Workbook wb.Close SaveChanges:=True 'Get next file name myFile = Dir Loop 'Message Box when task is completed MsgBox "Done!" 'reset setting that were change for optimization ResetSettings: Application.EnableEvents = True Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub