Este tutorial vai lhe ensinar tudo sobre a proteção de planilhas do Excel no VBA - Como proteger ou desproteger planilhas no Excel.
Desproteger planilha do Excel sem senha
Para desproteger uma planilha que não seja protegida por senha, use esta linha simples de código:
1 | Planilhas ("Folha1"). Desproteger |
Desproteger planilha do Excel com senha
Para desproteger uma planilha protegida por senha, você também deve inserir a senha:
1 | Planilhas ("Folha1"). Desproteger "Senha" |
Desproteger folha - senha perdida
Para desproteger uma planilha sem saber a senha, você deve usar um suplemento de recuperação de senha.
Proteger planilhas
A Proteção de planilha permite que você bloqueie a edição de certos aspectos da planilha.
Este menu é encontrado em Home> Formatar> Proteger folha ou clicando com o botão direito no nome da guia Planilha:
Mais comumente, isso é usado para proteger as células “bloqueadas” da edição, permitindo apenas que o usuário final edite certas células.
Você pode bloquear células selecionando-as e abrindo o Guia de proteção do Menu de formatação de células (CTRL + 1).
Você também pode impedir que o usuário altere a estrutura da planilha (inserindo, excluindo ou redimensionando Linhas e Colunas), ou de interagir com AutoFiltros e muito mais.
Proteger planilha - sem senha
Você pode querer proteger uma planilha sem digitar uma senha. Isso evitará alterações acidentais na planilha, enquanto dá ao usuário acesso para fazer alterações, se desejar.
1 | Planilhas ("Folha1"). Proteger |
Proteger planilha - proteger com senha
1 | Planilhas ("Folha1"). Proteger "Senha" |
Proteger as configurações da planilha
Os exemplos acima protegerão as planilhas com as configurações de proteção padrão. Em vez disso, você pode querer personalizar o que está protegido:
12345 | Planilhas ("Folha1"). Senha de proteção: = strPassword, DrawingObjects: = True, Conteúdo: = True, Cenários: = True, _UserInterfaceOnly: = True, AllowFormattingCells: = False, AllowFormattingColumns: = False, _AllowFormattingRows: = False, AllowInsertingColumns: = False, AllowInsertingRows: = False, _AllowInsertingHyperlinks: = False, AllowDeletingColumns: = False, AllowDeletingRows: = False, _AllowSorting: = False, AllowFiltering: = False, AllowUsingPivotTables: = False |
Em vez de usar a sintaxe acima, recomendo gravar uma macro com as configurações desejadas (escolhidas no menu Proteção da planilha acima) e copiar e colar o código gravado em seu procedimento.
Proteger planilha - permitir que o VBA faça alterações
Por padrão, quando você protege uma planilha, a proteção se aplica às operações do VBA, além das ações do usuário. Se o VBA tentar modificar uma célula bloqueada, você verá um erro de tempo de execução 1004. Para evitar isso, você pode desproteger e proteger novamente suas planilhas sempre que o VBA precisar interagir com elas:
123456789 | Sub Edit_Sheet1 ()'Desproteger Folha1Planilhas ("Folha1"). Desproteger'Faça algo para a Folha1'Reproteger Folha1Planilhas ("Folha1"). ProtegerEnd Sub |
No entanto, é fácil esquecer de desproteger e / ou proteger novamente suas planilhas. Isso pode aumentar a probabilidade de um erro de codificação.
Em vez disso, você pode usar a configuração UserInterFaceOnly. Quando TRUE, as planilhas SOMENTE serão protegidas dos usuários, NÃO do VBA.Seu código VBA estará livre para editar a planilha, como se estivesse desbloqueado.
Dois pontos importantes sobre UserInterFaceOnly:
- Esta configuração não está disponível no menu Proteção da planilha (mostrado acima). É uma configuração que deve ser definida em VBA.
- A configuração não é salva quando você fecha uma pasta de trabalho. Deve ser redefinido sempre que uma pasta de trabalho é aberta.
Portanto, para definir a propriedade UserInterFaceOnly, você deve colocar o seguinte procedimento de evento Workbook_Open no módulo ThisWorkbook:
1234567 | Sub Workbook_Open ()Dim ws como planilhaPara cada ws neste livro de trabalho.Fichas de trabalhows.Protect UserInterfaceOnly: = TruePróximo wsEnd Sub |
Workbook_Open é um procedimento de evento especial que será executado sempre que a pasta de trabalho for aberta. Deve ser colocado no módulo ThisWorkbook. Como alternativa, você pode usar o procedimento de evento Auto_Open (não abordado aqui).
Desproteger macro de todas as planilhas
Esta macro desprotegerá todas as planilhas em uma pasta de trabalho:
123456789 | 'Desproteger todas as planilhasSub UnProtectAllSheets ()Dim ws como planilhaPara cada ws nas planilhasws.Desproteger "senha"Próximo wsEnd Sub |
Proteger todas as planilhas macro
Esta macro protegerá todas as planilhas em uma pasta de trabalho:
123456789 | 'Proteger todas as planilhasSub ProtectAllSheets ()Dim ws como planilhaPara cada ws nas planilhasws.Proteger "senha"Próximo wsEnd Sub |