O Excel permite que você proteja suas pastas de trabalho do Excel contra alterações. Este tutorial mostrará como proteger ou desproteger a estrutura da pasta de trabalho usando o VBA.
Proteção de pasta de trabalho VBA
A Proteção de pasta de trabalho VBA permite que você bloqueie a estrutura da pasta de trabalho. Quando uma pasta de trabalho está protegida, os usuários não podem adicionar, excluir, ocultar / exibir ou proteger / desproteger planilhas. Se você estiver construindo um modelo, provavelmente deseja ativar a proteção da pasta de trabalho para evitar que os usuários (ou você!) Excluam acidentalmente as planilhas.
UnProtect Workbook VBA
Para desproteger uma pasta de trabalho, basta usar a seguinte linha de código:
1 | Pastas de trabalho ("Livro1"). Desproteger |
Observação: este código só funcionará se a pasta de trabalho estiver protegida sem uma senha. Se estava protegido por senha, você também deve inserir a senha para desprotegê-lo:
Pasta de trabalho UnProtect com senha
Esta linha de código irá desproteger uma pasta de trabalho que foi protegida por uma senha:
1 | Pastas de trabalho ("Livro1"). Desproteger senha: = "senha" |
ou você pode omitir a senha: =
1 | Pastas de trabalho ("Livro1"). Desproteger "senha" |
Desproteger este livro de trabalho
Este código irá desproteger ThisWorkbook (ThisWorkbook é a pasta de trabalho onde o código em execução está armazenado. Ele nunca será alterado).
1 | ThisWorkbook.Unprotect |
ou desproteja este livro de trabalho com uma senha:
1 | ThisWorkbook.Unprotect "password" |
UnProtect ActiveWorkbook
Este código irá desproteger o ActiveWorbook.
1 | ActiveWorkbook.Unprotect |
ou desproteja o ActiveWorkbook com uma senha:
1 | ActiveWorkbook.Unprotect "password" |
Desproteger todas as pastas de trabalho abertas
Este código irá desproteger todas as pastas de trabalho abertas:
12345678 | Sub UnprotectAllOpenWorkbooks ()Dim wb como pasta de trabalhoPara cada wb nas pastas de trabalhowb.UnprotectPróximo wbEnd Sub |
Pasta de trabalho UnProtect - sem saber a senha
Se você precisar desproteger uma pasta de trabalho sem saber a senha, existem vários suplementos para ajudar. Eu recomendaria o Ribbon Commander.
Desproteger todas as planilhas da pasta de trabalho
Depois de desproteger uma pasta de trabalho, você também pode querer desproteger todas as planilhas da pasta de trabalho. Este é um procedimento que irá desproteger todas as folhas:
12345678 | Sub UnProtectWorkbookAndAllSheets ()Dim ws como planilhaActiveWorkbook.UnprotectPara cada ws nas planilhasws.UnprotectPróximoEnd Sub |
Proteger a pasta de trabalho
Você pode proteger as estruturas da pasta de trabalho da mesma forma que desprotege.
Proteger pasta de trabalho sem senha
Esta linha de código protegerá uma pasta de trabalho (sem senha)
1 | Pastas de trabalho ("Livro1"). Proteger |
Observação: frequentemente aplicarei a proteção da pasta de trabalho sem senhas, simplesmente para evitar acidental alterações nas pastas de trabalho.
Proteger a pasta de trabalho com senha
Este código protegerá a estrutura da pasta de trabalho (com uma senha)
1 | Pastas de trabalho ("Livro1"). Proteja a "senha" |
ou:
1 | Pastas de trabalho ("Livro1"). Senha de proteção: = "senha" |
Arquivo Excel protegido por senha
Em vez da proteção da pasta de trabalho, você pode querer proteger com senha um arquivo Excel inteiro. Para fazer isso usando o VBA, salve como a pasta de trabalho com uma senha:
1 | Pastas de trabalho ("Livro1"). Salvar como "senha" |
Exemplos de proteger / desproteger pasta de trabalho
Reexibir todas as planilhas na pasta de trabalho protegida
Este procedimento irá desproteger uma pasta de trabalho, ocultar todas as planilhas e protegê-la novamente
12345678910 | Sub UnprotectWB_Unhide_All_Sheets ()Dim ws como planilhaActiveWorkbook.UnprotectPara cada ws nas planilhasws.Visible = xlSheetVisiblePróximoActiveWorkbook.ProtectEnd Sub |
Proteja a pasta de trabalho e todas as planilhas
Este procedimento protegerá todas as planilhas em uma pasta de trabalho e, em seguida, protegerá a pasta de trabalho:
1234567891011 | Sub ProtectWB_Protect_All_Sheets ()Dim ws como planilhaActiveWorkbook.UnprotectPara cada ws nas planilhasws.ProtectPróximoActiveWorkbook.ProtectEnd Sub |
Você também pode adicionar proteção por senha:
1234567891011 | Sub ProtectWB_Protect_All_Sheets_Pswrd ()Dim ws como planilhaActiveWorkbook.Unprotect "password"Para cada ws nas planilhasws.Proteger "senha"PróximoActiveWorkbook.Protect "senha"End Sub |