Vídeo recomendado
https://youtu.be/diWPPPhW-9E

PROTEGER VARIAS PASTAS - VBA

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
MSL_Marcelo
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Qua Jan 19, 2022 12:45 pm

PROTEGER VARIAS PASTAS - VBA

Mensagem por MSL_Marcelo »

Pessoal,

Escrevi o código abaixo para proteger automaticamente várias abas do Excel, sem precisar fazer isso manualmente. Porém, estou com 3 problemas que não estou sabendo resolver. Podem me ajudar?
1 - Na ação "Proteger" o botão cancelar não funciona corretamente. Acaba executando a macro com a senha em branco. Deveria sair da macro.
2 - Na ação "Desproteger", se errar a senha, da erro e aparece a MSGBOX para depurar. (Inaceitavel). Deveria dar a mensagem "Senha incorreta" e voltar a executar pedindo a senha.
3 - Na ação "Desproteger", o botão cancelar também vai para depurar, mas deveria sair da macro.

São essas as correções que peço ajuda dos amigos sêniors.

O código também possibilita deixar uma ou outra aba sem senha. Bem útil pra quem precisa proteger diversas vezes.
Vou deixar o código abaixo:

Sub Proteger()

Dim Pass As String
Dim QtdePlan As Integer
Dim PlanAtual As Integer
Dim PlanDeFora As String
'Informe o nome das Planilhas que deseja deixar de fora da proteção
'Separe as planilhas com espaço e ;
PlanDeFora = "PLan1 ; Plan2" 'Informe aqui o nome da(s) Plnilha(s)
Pass = InputBox("Proteger todas as planilhas:", "Senha")
QtdePlan = Worksheets.Count
PlanAtual = 1
While PlanAtual <= QtdePlan
If InStr(PlanDeFora, Sheets(PlanAtual).Name) = 0 Then
Worksheets(PlanAtual).Activate
ActiveSheet.Protect Password:=Pass
End If
PlanAtual = PlanAtual + 1
Sheets(2).Activate

Wend
MsgBox "Não esqueça a senha de proteção!" & Chr(13) & "Senha: " & Pass, vbInformation + vbOKOnly, "SENHA PROTEÇÃO"
MsgBox "Planilhas protegidas!"

End Sub



Sub Desproteger()

Dim Pass As String
Dim QtdePlan As Integer
Dim PlanAtual As Integer
Pass = InputBox("Desproteger todas as planilhas:", "Senha")
QtdePlan = Worksheets.Count
PlanAtual = 1
While PlanAtual <= QtdePlan
Worksheets(PlanAtual).Activate
ActiveSheet.Unprotect Password:=Pass
PlanAtual = PlanAtual + 1
Sheets(2).Activate

Wend
MsgBox "Planilhas desprotegidas!"

End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: PROTEGER VARIAS PASTAS - VBA

Mensagem por Reinaldo »

O InputBox, não fornece uma maneira de "capturar" o botão acionado.
Uma "alternativa" paliativa
[/code]Sub mbc()
Dim Nome As String
Dim Cpt As Integer
Cpt = 1
De:
Nome = InputBox("Digite seu NOME:", , "Sua Senha")
If Len(Nome) = 0 Then
GoTo Cancelado
ElseIf Nome = "Sua Senha" Then
MsgBox "Informe uma Senha"
GoTo De
End If
MsgBox "Sua Senha é:" & Nome
Exit Sub
Cancelado:
MsgBox "Cancelado pelo Usuario"
End Sub[/code]


MSL_Marcelo
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Qua Jan 19, 2022 12:45 pm

Re: PROTEGER VARIAS PASTAS - VBA

Mensagem por MSL_Marcelo »

Reinaldo,
O código que desenhei, pede senha e passa por todos as abas existentes na planilha para proteger. No momento de desproteger, faz o mesmo em todas as abas.
Seria o mesmo que clicar com o botão direito do mouse para proteger/desproteger cada aba manualmente.
Não entendi como usar seu código diante da minha necessidade.

1 - Saberia como fazer uma rotina de escape dentro do código que desenhei, tanto no "proteger" como no "Desproteger" ???
2 - No caso de senha errada, como fazer executar novamente pra inserir a senha???


MSL_Marcelo
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Qua Jan 19, 2022 12:45 pm

Re: PROTEGER VARIAS PASTAS - VBA

Mensagem por MSL_Marcelo »

Pessoal,

Alguém consegue me ajudar a resolver esse código, preciso da mesma lógica, mas que funcione esses pontos de escape:

1 - Na ação "Proteger" o botão cancelar não funciona corretamente. Acaba executando a macro com a senha em branco. Deveria sair da macro.
2 - Na ação "Desproteger", se errar a senha, da erro e aparece a MSGBOX para depurar. (Inaceitavel). Deveria dar a mensagem "Senha incorreta" e voltar a executar pedindo a senha.
3 - Na ação "Desproteger", o botão cancelar também vai para depurar, mas deveria sair da macro.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder