Como proteger uma pasta de trabalho com vba?
Para proteger uma pasta de trabalho, você deve usar o método PROTECT do VBA. Usando esse método, você pode usar uma senha ou até mesmo ativar a proteção da pasta de trabalho sem senha. Mas há uma coisa que você precisa considerar para a senha que você usa: CASE SENSITIVE.
Workbook.Protect "Password"- Especifique a pasta de trabalho que você deseja proteger.
- Toque e aponte e selecione o método de proteção na lista ou você pode tocar em “Proteger”.
- Digite a senha que deseja definir.
- Execute o código para proteger a pasta de trabalho.
Neste tutorial, aprenderemos esse método de diferentes maneiras e também como desproteger uma pasta de trabalho.
Links úteis: Executar uma macro – Gravador de macro – Editor Visual Basic – Manual pessoal de macros
Proteja uma pasta de trabalho com uma senha
Abaixo está o código que você precisa usar para proteger uma pasta de trabalho com senha. Neste código, primeiro você tem o nome da pasta de trabalho e o método de proteção por senha.
Workbooks("Book1").Protect "test123"E quando executo esse código, ele bloqueia a pasta de trabalho “Livro1”.

Proteja uma pasta de trabalho sem senha
E se quiser proteger uma pasta de trabalho sem senha, você deve ignorar o argumento “Senha”, assim como o código a seguir.
Workbooks("Book1").ProtectSe você tentar proteger uma pasta de trabalho sem senha que já esteja protegida por senha, o Excel exibirá uma caixa de diálogo para inserir essa senha.
Desproteger uma pasta de trabalho com uma senha
Da mesma forma, você pode usar o método unprotect para desproteger a pasta de trabalho e o código seria semelhante ao abaixo.
Workbooks("Book1").Unprotect "test123"Há uma coisa que você precisa cuidar se estiver tentando desproteger uma pasta de trabalho que está
Desproteger uma pasta de trabalho sem senha
E se uma pasta de trabalho estiver protegida sem senha, você poderá usar o mesmo método sem especificar o argumento de senha.
Proteja todas as pastas de trabalho abertas
No código abaixo, temos um loop FOR EACH para percorrer todas as pastas de trabalho abertas e proteger cada pasta de trabalho, uma por uma, usando o mesmo método de proteção.
'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 SubComo estou usando a pasta de trabalho de macro pessoal, usei uma instrução IF THEN ELSE para ignorar se o nome da pasta de trabalho for ” personal.xlsb “. Certifique-se também de cuidar disso.
Proteja uma pasta de trabalho fechada
Você também pode proteger e desproteger uma pasta de trabalho fechada salva em um local. Veja o código a seguir, onde usei o local da minha área de trabalho para usar o arquivo “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 SubO código acima usou o método Workbook.Open para abrir a pasta de trabalho que você deseja proteger e, em seguida, desabilitou a atualização da tela para funcionar no back-end.
Proteja todas as pastas de trabalho fechadas em uma pasta
O código a seguir percorre todas as pastas de trabalho que estão na pasta especificada como caminho. E então abra cada fichário, proteja-o e feche um por um.
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