Come proteggere una cartella di lavoro con vba?

Per proteggere una cartella di lavoro, è necessario utilizzare il metodo PROTECT di VBA. Utilizzando questo metodo, puoi utilizzare una password o persino abilitare la protezione della cartella di lavoro senza password. Ma c’è una cosa che devi considerare per la password che usi, cioè CASE SENSITIVE.

 Workbook.Protect "Password"
  1. Specifica la cartella di lavoro che desideri proteggere.
  2. Tocca, punta e seleziona il metodo di protezione dall’elenco oppure puoi toccare “Proteggi”.
  3. Inserisci la password che desideri impostare.
  4. Eseguire il codice per proteggere la cartella di lavoro.

In questo tutorial impareremo questo metodo in diversi modi e impareremo anche come rimuovere la protezione di una cartella di lavoro.

Link utili: Esegui una macroRegistratore di macroVisual Basic EditorManuale delle macro personali

Proteggi una cartella di lavoro con una password

Di seguito è riportato il codice che è necessario utilizzare per proteggere con password una cartella di lavoro. In questo codice, innanzitutto hai il nome della cartella di lavoro e il metodo di protezione tramite password.

 Workbooks("Book1").Protect "test123"

E quando eseguo questo codice, blocca la cartella di lavoro “Book1”.

blocca la cartella book1

Proteggi una cartella di lavoro senza password

E se vuoi proteggere una cartella di lavoro senza password, dovresti ignorare l’argomento “Password”, proprio come il codice seguente.

 Workbooks("Book1").Protect

Se provi a proteggere una cartella di lavoro senza password già protetta da password, Excel visualizzerà una finestra di dialogo per inserire tale password.

Rimuovere la protezione di una cartella di lavoro con una password

Allo stesso modo, puoi utilizzare il metodo unprotect per rimuovere la protezione della cartella di lavoro e il relativo codice sarebbe simile al seguente.

 Workbooks("Book1").Unprotect "test123"

C’è una cosa di cui devi occuparti se stai cercando di rimuovere la protezione di una cartella di lavoro che è w

Rimuovere la protezione di una cartella di lavoro senza password

E se una cartella di lavoro è protetta senza password, puoi utilizzare lo stesso metodo senza specificare l’argomento password.

Proteggi tutte le cartelle di lavoro aperte

Nel codice seguente, abbiamo un ciclo FOR EACH per scorrere tutte le cartelle di lavoro aperte e proteggere ciascuna cartella di lavoro una per una utilizzando lo stesso metodo di protezione.

 '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

Poiché utilizzo la cartella di lavoro macro personale, ho utilizzato un’istruzione IF THEN ELSE per ignorare se il nome della cartella di lavoro è ” personal.xlsb “. Assicurati anche di prendertene cura.

Proteggi una cartella di lavoro chiusa

È inoltre possibile proteggere e rimuovere la protezione da una cartella di lavoro chiusa salvata in una posizione. Guarda il codice seguente in cui ho utilizzato la posizione del desktop per utilizzare il file “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

Il codice precedente utilizzava il metodo Workbook.Open per aprire la cartella di lavoro che desideri proteggere, quindi disabilita l’aggiornamento dello schermo per funzionare nel back-end.

Proteggi tutte le cartelle di lavoro chiuse in una cartella

Il codice seguente scorre tutte le cartelle di lavoro presenti nella cartella specificata come percorso. E poi apri ogni raccoglitore, proteggilo e chiudilo uno per uno.

 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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *