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
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
PROTEGER VARIAS PASTAS - VBA
-
- Acabou de chegar
- Mensagens: 3
- Registrado em: Qua Jan 19, 2022 12:45 pm
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: PROTEGER VARIAS PASTAS - VBA
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]
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]
-
- Acabou de chegar
- Mensagens: 3
- Registrado em: Qua Jan 19, 2022 12:45 pm
Re: PROTEGER VARIAS PASTAS - VBA
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???
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???
-
- Acabou de chegar
- Mensagens: 3
- Registrado em: Qua Jan 19, 2022 12:45 pm
Re: PROTEGER VARIAS PASTAS - VBA
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.
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.