VBA Proteger / Desproteger Planilhas

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
wave wave wave wave wave