VBA Excel - Protege e Desprotege todas as planilhas - Protect and Unprotect all Worksheets




Quando entregamos alguns dos nossos trabalhos, desejamos fazê-lo de um modo que permaneçam intactos até que este chegue às mãos daquele que nos solicitou. Muito provavelmente já deparou-se com a seguinte situação:

Um dos seus Clientes (que lhe solicitou uma solução, e quem você havia pessoalmente entrevistado antes do desenvolvimento), pediu para que um assessor dele pudesse dar uma olhada no Dashboard, Scorecard ou Report, que você preparou, antes que ele mesmo o fizesse. 

O intuito do Cliente é oportuno, afinal de contas alguém pode poupar-lhe o tempo, por limar quaisquer aspectos que não estiverem em conformidade com o solicitado. Mas..., sempre tem um 'mas'. Aquele assessor dedicado, sabendo dos gostos tais como fonte, cores, tamanhos que o seu chefe gosta, decide aplicá-los a sua solução, sem ao menos imaginar que você mesmo já teve um todo um trabalho para harmonizar as cores, o ambiente e logomarca. Como impedir este auxiliares de comprometerem a Identidade Visual que você definiu?

Calma pessoal, não precisamos desenvolver nada que eletrifique o assessor do nosso Cliente. Apenas vamos proteger todas as planilhas com uma senha que somente será divulgada ao nosso Cliente final, e esta lhe será informada alertando-o antecipadamente das responsabilidades inerentes.

Existe código prá isso? Sim, divirta-se!

Sub ProtectAllWorksheets()
' Função que protege todas as planilhas de um arquivo

    Dim lPass As String
    Dim lQtdePlan As Integer
    Dim lPlanAtual As Integer

    'Solicita a senha

    Let lPass = InputBox("Proteger todas as planilhas:", "Senha", ActName)

    'Inicia as variáveis
    Let lQtdePlan = Worksheets.Count
    Let lPlanAtual = 1

    'Loop pelas planilhas
    While lPlanAtual <= lQtdePlan
        'O método Worksheets(lPlanAtual).Activate ativa a planilha conforme o índice atual 1, 2, 3...
        Worksheets(lPlanAtual).Activate

        'O método .Protect proteje a planilha passando os parâmetros para proteger
        'objetos de desenho, conteúdo, cenários e passando o password digitado
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=lPass

        'Muda o índice para passar para a próxima planilha
        Let lPlanAtual = lPlanAtual + 1
    Wend

    'O método MsgBox exibe um formulário de aviso ao usuário.
    MsgBox "Planilhas protegidas!"
End Sub

E como faço para desproteger?

Sub UnProtectAllWorksheets()
    ' Função que desprotege todas as planilhas de um arquivo

    Dim lPass As String
    Dim lQtdePlan As Integer
    Dim lPlanAtual As Integer

    'Solicita a senha
    Let lPass = InputBox("Desproteger todas as planilhas:", "Senha", ActName)

    'Inicia as variáveis
    Let lQtdePlan = Worksheets.Count
    Let lPlanAtual = 1

    'Loop pelas planilhas
    While lPlanAtual <= lQtdePlan
        'O método Worksheets(lPlanAtual).Activate ativa a planilha conforme o índice atual 1, 2, 3...
        Worksheets(lPlanAtual).Activate

        'O método .UnProtect desprotege a planilha
        ActiveSheet.Unprotect Password:=lPass

        'Muda o índice para passar para a próxima planilha
        Let lPlanAtual = lPlanAtual + 1
    Wend

    'O método MsgBox exibe um formulário de aviso ao usuário.
    MsgBox "Planilhas desprotegidas!"
End Sub



References: Guiadoexcel.com.br

Tags: VBA, Office, Excel, protect, unprotect, proteger, desproteger


Nenhum comentário:

Postar um comentário

diHITT - Notícias