Folha VBA UnProtect

Folha de Desprotecção do Excel VBA

Existem situações em que protegemos nossas planilhas para evitar que o usuário manipule as planilhas. Ao proteger a planilha, geralmente mantemos a mesma senha. Neste artigo, mostraremos como desproteger a planilha usando a codificação VBA.

Exemplos

Você pode baixar este modelo VBA Unprotect Planilha Excel aqui - VBA Unprotect Planilha Excel Template

Exemplo 1

Desproteger a planilha é 99% mais simples do que protegê-la, só precisamos da senha para desproteger a planilha.

A primeira coisa que precisamos fazer é mencionar o nome da planilha que iremos desproteger. Por exemplo, se você deseja desproteger a planilha denominada “Dados de vendas”, seu código VBA deve ser assim.

Planilhas (“Dados de Vendas”)

Em seguida, acesse o método Desproteger.

Como podemos ver na imagem acima, não vemos nenhum tipo de lista do IntelliSense para nos ajudar. Isso torna o trabalho mais difícil, especialmente para o novo aluno.

Para superar isso, geralmente confio em declarar uma variável VBA como “Planilha”.

Código:

 Sub Unpretect_Example1 () Dim Ws As Worksheet End Sub 

Agora defina a variável declarada para a respectiva planilha.

Código:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") End Sub 

Agora use uma variável para acessar todas as propriedades e métodos da variável declarada.

Como você pode ver na imagem acima, podemos acessar todas as propriedades e métodos. Selecione o método “Desproteger” na lista do IntelliSense.

Está pedindo a senha para desproteger a Planilha. Eu defini a senha como “Excel @ 1234”, então irei fornecer a mesma senha.

Isso irá desproteger a planilha denominada “Dados de vendas”.

Código:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") Ws.Unprotect Password: = "Excel @ 1234" End Sub 

Se não houver senha, basta usar o método “Desproteger” e ignorar o parâmetro “Senha”.

Código:

 Sub Unpretect_Example1 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales Data") 'Altere o nome da planilha de acordo com seu requisito Ws.Unprotect' Se não houver senha, basta passar o método "UnProtect" End Sub 

Se houver alguma senha, precisamos inseri-la entre aspas duplas. A senha diferencia maiúsculas de minúsculas, portanto lembre-se delas com cuidado.

Exemplo 2 - Desproteja todas as planilhas do Excel com apenas um clique

Vimos como desproteger a planilha específica. Imagine que você tem muitas planilhas e todas as planilhas estão protegidas com a mesma senha, então não podemos continuar escrevendo códigos para cada planilha separadamente.

Nesses casos, precisamos usar loops para percorrer a coleção de objetos de planilha e desprotegê-los com facilidade.

O código abaixo percorrerá todas as planilhas e desprotegerá a planilha.

Código:

Sub Unpretect_Example2 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Unprotect Password: = "Excel @ 1234" 'Altere a senha como você mencionou enquanto os protege. Next Ws End Sub

Exemplo # 3 - Situações especiais

Situação 1: Já imaginou quando a senha fornecida está errada. Quando a senha fornecida estiver errada, obteremos 1004: Erro de tempo de execução.

Para lidar com esses erros, podemos usar a opção “On Error GoTo Label”. Abaixo do código está o exemplo do mesmo.

Código:

Sub Unpretect_Example3 () Dim Ws As Planilha Para Cada Ws Em ActiveWorkbook.Worksheets On Error GoTo Errormessage Ws.Unprotect Password: = "Excel @ 1234" 'Altere a senha conforme mencionou enquanto os protege. Mensagem de erro: MsgBox "Senha errada" Next Ws End Sub

O código acima mostrará uma bela caixa de mensagem dizendo “Senha errada”.

Situação 2: Quando a planilha está protegida sem senha e se você fornecer uma senha aleatória ainda irá desproteger a planilha sem apresentar nenhum tipo de erro.

Situação 3: quando a planilha está protegida por senha, mas se você não fornecer nenhuma senha, o VBA aparecerá como uma caixa de entrada de senha para inserir a senha.

Na caixa de entrada acima, precisamos inserir nossa senha para desproteger a planilha. Se você clicar no botão Cancelar, ele sairá do subprocedimento VBA sem mostrar nada, a menos que haja uma caixa de mensagem do usuário.