Proteger/Desproteger todas as planilhas – Excel VBA

Objetivo: Proteger todas as planilhas de um arquivo Excel rapidamente através de um código VBA.

O leitor Mauro Carniel pediu um código VBA para proteger todas as planilhas de uma vez, através de uma senha solicitada.

Este código faz isso, solicita uma senha e a aplica para proteger todas as planilhas do arquivo.

'Função que protege todas as planilhas de um arquivo
Sub lsProtegerTodasAsPlanilhas()
    'Declara as variáveis necessárias
    Dim lPass As String
    Dim lQtdePlan As Integer
    Dim lPlanAtual As Integer
 
    'Solicita a senha
    'O método InputBox é utilizado para solicitar um valor através de um formulário
    lPass = InputBox("Proteger todas as planilhas:", "Senha", ActName)
 
    'Inicia as variáveis
    'O método Worksheets.Count passa a quantidade de planilhas existentes no arquivo
    lQtdePlan = Worksheets.Count
    lPlanAtual = 1
 
    'Loop pelas planilhas
    'A função While realiza um loop de código enquanto não passar por todas as planilhas contadas
    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
        lPlanAtual = lPlanAtual + 1
    Wend
 
    'O método MsgBox exibe um formulário de aviso ao usuário.
    MsgBox "Planilhas protegidas!"
 
End Sub

Esta outra função desprotege todas as planilhas, solicitando senha.

'Função que desprotege todas as planilhas de um arquivo
Sub lsDesprotegerTodasAsPlanilhas()
    'Declara as variáveis necessárias
    Dim lPass As String
    Dim lQtdePlan As Integer
    Dim lPlanAtual As Integer
 
    'Solicita a senha
    'O método InputBox é utilizado para solicitar um valor através de um formulário
    lPass = InputBox("Desproteger todas as planilhas:", "Senha", ActName)
 
    'Inicia as variáveis
    'O método Worksheets.Count passa a quantidade de planilhas existentes no arquivo
    lQtdePlan = Worksheets.Count
    lPlanAtual = 1
 
    'Loop pelas planilhas
    'A função While realiza um loop de código enquanto não passar por todas as planilhas contadas
    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
        lPlanAtual = lPlanAtual + 1
    Wend
 
    'O método MsgBox exibe um formulário de aviso ao usuário.
    MsgBox "Planilhas desprotegidas!"
 
End Sub

Para usar as funções adicione as mesmas conforme explicado no artigo http://guiadoexcel.com.br/criando-funcoes-proprias-globais.

GUT PPT

Abraço

Marcos Rieper

excel vba

SISTEMA DE GESTÃO CONTA AZUL

O Excel é uma plataforma de trabalho muito aberta para servir ao gerenciamento de dados de uma empresa, dado a complexidade e a integração entre as diversas áreas que a compõe. Mas é a melhor para analisar suas informações.

Com a intenção de atender as micro e pequenas empresas a Conta Azul criou um software de gestão aonde você tudo o que você precisa para gerir a sua empresa: Estoque, Vendas, Financeiro e ainda emite Nota Fiscal Eletrônica, tudo isso em um sistema simples de trabalhar, que você acessa pela internet, não há a necessidade de comprar servidores e preocupar-se com backup e atendimento através de 0800.

O preço da ferramenta também chama a atenção, sendo um preço mais do que justo para se ter o controle dos dados e a geração de informações para a análise do seu negócio.

ContaAzul é um software de gestão financeira e fiscal para micro e pequenas empresas. Ele funciona 100% em plataforma web, não necessitando nenhuma instalação ou atualização. Você pode acessar de qualquer lugar e não tem necessidade de comprar nova licença caso troque de computador.

  O Guia do Excel recomenda o Conta Azul no gerenciamento de sua empresa.
Use QR-Code to get this permaking using your Smartphone. QR Code for Proteger/Desproteger todas as planilhas – Excel VBA

10 Comentários

  1. Walter Bernal disse:

    Marcos,

    O problema é que acessando a guia revisão é só apertar a Proteger planilha, que tudo volta ao normal sem solicitar senha. Meu grande problema está sendo nessa parte, criei um código, muito parecido com o seu.

    Sub Proteger()

    ‘Senha inserida na célula C20 sheet (Configuração)

    Dim senha As String
    Dim resposta As String

    senha = Worksheets(“configuração”).Range(“I40″).Value

    resposta = InputBox(“Digite a senha para continuar”, , “”)

    If resposta = senha Then

    Else

    MsgBox “Esta senha não confere.”, vbCritical, “Atenção”

    ‘não continuar a macro
    Exit Sub
    End If

    ‘Confirmando a senha executa o código

    Sheets(Array(“Dados”, “Valores”, “Ajuste”)).Select
    Sheets(“Dados”).Activate
    ActiveWindow.SelectedSheets.Visible = False
    ActiveWorkbook.Protect Structure:=True, Windows:=True
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Application.DisplayFullScreen = True
    End sub

    Porém a pessoa clicando em desproteger na guia revisão volta tudo ao normal.

    Já quebrei a cabeça, procurando uma solução… xD

    Abraço!

  2. Marcos Rieper disse:

    Bom dia Walter,

    Faltou a parte do password.

    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=lPass

    Abraço

    Marcos Rieper

  3. Sonafa disse:

    A vba esta funcionando, porem quando vou executar outras macros da minha planilha aprece um erro 104 “Em tempo de excução”. O que posso fazer para resolver?

    Abs,

  4. Wilker Paz disse:

    Melhoras apenas para que após proteger ou desproteger todas as planilhas volte para a planilha de origem

    ‘Função que protege todas as planilhas de um arquivo
    Sub lsProtegerTodasAsPlanilhas()
    ‘Declara as variáveis necessárias
    Dim lPass As String
    Dim lQtdePlan As Integer
    Dim lPlanAtual As Integer
    Dim lPlanOrigem As String

    ‘Solicita a senha
    ‘O método InputBox é utilizado para solicitar um valor através de um formulário
    lPass = InputBox(“Proteger todas as planilhas:”, “Senha”, ActName)

    ‘Inicia as variáveis
    ‘O método Worksheets.Count passa a quantidade de planilhas existentes no arquivo
    lQtdePlan = Worksheets.Count
    lPlanAtual = 1
    lPlanOrigem = ActiveSheet.Name
    ‘Loop pelas planilhas
    ‘A função While realiza um loop de código enquanto não passar por todas as planilhas contadas
    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
    lPlanAtual = lPlanAtual + 1
    Wend
    Worksheets(lPlanOrigem).Activate
    'O método MsgBox exibe um formulário de aviso ao usuário.
    MsgBox "Planilhas protegidas!"

    End Sub

    'Função que desprotege todas as planilhas de um arquivo
    Sub lsDesprotegerTodasAsPlanilhas()
    'Declara as variáveis necessárias
    Dim lPass As String
    Dim lQtdePlan As Integer
    Dim lPlanAtual As Integer
    Dim lPlanOrigem As String

    'Solicita a senha
    'O método InputBox é utilizado para solicitar um valor através de um formulário
    lPass = InputBox("Desproteger todas as planilhas:", "Senha", ActName)

    'Inicia as variáveis
    'O método Worksheets.Count passa a quantidade de planilhas existentes no arquivo
    lQtdePlan = Worksheets.Count
    lPlanAtual = 1
    lPlanOrigem = ActiveSheet.Name

    'Loop pelas planilhas
    'A função While realiza um loop de código enquanto não passar por todas as planilhas contadas
    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
    lPlanAtual = lPlanAtual + 1
    Wend
    Worksheets(lPlanOrigem).Activate
    'O método MsgBox exibe um formulário de aviso ao usuário.
    MsgBox "Planilhas desprotegidas!"

    End Sub

  5. Tom disse:

    Olá amigo… Muito obrigado pela informação!!!

    Estou com um Problema e até agora não consigo resolver.

    É usar o autofiltro com a Planilha bloqueada
    tem como você dar algumas dicas ou algum tópico para eu estudar??
    muito grato pela atenção e pelo seu trabalho.

  6. Herbert disse:

    Bom dia.
    como eu posso acrescentar uma mensagem para “senha incorreta ”
    Estou tentando mais não estou conseguindo.

    Abraços.

  7. André disse:

    Amigos,

    Estou querendo usar a “planilha_in_maquinas_equipamentos – Versão 1.0.0.39″ do BNDES e gera erro no office 2007 de “Planilha Protegida”. Mas em outras maquinas com o mesmo office não gera este erro. Já desinstalei e reconfigurei e não consigo usar essa planilha.Alguém tem uma ideia?

Deixe o seu comentário


 
%d blogueiros gostam disto: