macro para proteger determinada planilha - Resolvido

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA

macro para proteger determinada planilha - Resolvido

Mensagempor Henry-Systems » Dom Jul 08, 2012 2:05 am

Buenas a todos.

Estou precisando de um help para terminar um cadastro no meu trabalho.

No meu cadastro vão existir duas planilhas (Cadastro CPD e Cadastro SEGURANÇA), uma para cada usuário.

O que eu preciso é que ao iniciar a tela de cadastro do usuário "A" a planilha (Cadastro CPD) referente a esse usuário seja desbloqueada com um senha predefinida e ao fechar a tela do cadastro a planilha seja bloqueada novamente.
Quero que aconteça o mesmo para o usuário B (Cadastro SEGURANÇA), mas as senhas são diferentes uma da outra, pois um não pode alterar o conteudo do outro.

Tetei utilizar o codigo abaixo, mas ao tentar alterar os dados, incluir ou excluir, se não estiver na ABA correta retorna erro de que a planilha está bloqueada.

Código: Selecionar todos
Dim BoolProtect As Boolean
Const senha As String = "senha a utilizar"

'----------------------------------------------
'Proteger e desproteger planilha

Sub Desprotege_Planilha()
  Dim ws As Worksheet
  Set ws = ActiveSheet
  BoolProtect = False
  'Checa se a planilha esta protegida.
  If ws.ProtectContents = True Then
     BoolProtect = True
     'desprotege a planilha
     ws.Unprotect _
        Password:=senha
    End If
End Sub

Sub Protege_Planilha()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ' Checa se planilha esta protegida
    If BoolProtect = False Then
        ws.Protect _
        Password:=senha
        BoolProtect = False
    Else
     ws.Protect _
        Password:=senha
        BoolProtect = True
    End If
End Sub


O métedo só funciona se estiver com a planilha aberta e visivel caso contrario não funciona.
Já vasculhei a internet e não consegui encontrar algo que me ajude.

Só para esclarecer, o usuário "A" irá preencher o cadastro, após isso essas informações irão para o usuário "B" onde ele irá completar as restantes informações... Serão informações espelhos.

Se alguém conseguir me dar um help irei agradecer muito.

Abraços
Editado pela última vez por Henry-Systems em Dom Set 02, 2012 3:25 pm, em um total de 1 vez.
Henry-Systems
 
Mensagens: 91
Registrado em: Sáb Nov 26, 2011 1:05 pm
Localização: Rio Grande da Serra - São Paulo
Agradecimentos dados: 18 vezes
Agradecimentos recebidos: 7 vezes

Re: macro para proteger determinada planilha

Mensagempor webmaster » Seg Jul 09, 2012 6:57 pm

Henry,

O problema está nesta linha:

Código: Selecionar todos
Set ws = ActiveSheet


ActiveSheet é a planilha ativa naquele momento no Excel como um todo, e não na planilha ativa. Tente trocar para WorkSheets("NomeDaPlanilha") e veja se funciona.

Abraços
Tomás
http://www.tomasvasquez.com.br/blog
http://twitter.com/tomamais
Gostou da resposta? Clique no ícone Imagem da mensagem!
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

O autor desta mensagem webmaster foi agradecido por:
Henry-Systems (Ter Jul 10, 2012 2:41 pm)
Qualificação: 20%
 
Avatar do usuário
webmaster
Administrador
 
Mensagens: 1724
Registrado em: Sex Jul 24, 2009 2:44 pm
Agradecimentos dados: 104 vezes
Agradecimentos recebidos: 78 vezes

Re: macro para proteger determinada planilha

Mensagempor Henry-Systems » Ter Jul 10, 2012 2:40 pm

webmaster escreveu:Henry,

O problema está nesta linha:

Código: Selecionar todos
Set ws = ActiveSheet


ActiveSheet é a planilha ativa naquele momento no Excel como um todo, e não na planilha ativa. Tente trocar para WorkSheets("NomeDaPlanilha") e veja se funciona.

Abraços


Buenas.

Cara você salvou o meu dia!!!!!
A sua suestão sugestão deu certo.
Fiz o teste até com a planilha oculta e fez tudo da forme que eu queria.

Muitoooooooo gratoooooo.

Abraços
Henry-Systems
 
Mensagens: 91
Registrado em: Sáb Nov 26, 2011 1:05 pm
Localização: Rio Grande da Serra - São Paulo
Agradecimentos dados: 18 vezes
Agradecimentos recebidos: 7 vezes

macro para proteger determinada planilha - Nova Ajuda

Mensagempor Henry-Systems » Dom Jul 22, 2012 11:43 am

webmaster escreveu:Henry,

O problema está nesta linha:

Código: Selecionar todos
Set ws = ActiveSheet


ActiveSheet é a planilha ativa naquele momento no Excel como um todo, e não na planilha ativa. Tente trocar para WorkSheets("NomeDaPlanilha") e veja se funciona.

Abraços


Buenas, amigo.

Estou precisando de uma ajuda neste tópico.

Descobri que ao utilizar a proteção, não consigo utilizar filtros na planilha.

A unica coisa que o usuário poderá fazer na planilha é a de utilizar o filtro.

Será que tem como utilizar um código em conjunto com a proteção para utilização de filtro?

Segue anexo o projeto 99% funcionando, só faltando a questão dos filtros.
Desde ná agradeço.

Abraços
Anexos
NF EMITIDAS MÊS DE JUNHO ATUALIZADA(VBA - Ajuda).rar
Cadastro com proteção
(222.71 KiB) Baixado 41 vezes
Henry-Systems
 
Mensagens: 91
Registrado em: Sáb Nov 26, 2011 1:05 pm
Localização: Rio Grande da Serra - São Paulo
Agradecimentos dados: 18 vezes
Agradecimentos recebidos: 7 vezes

Re: macro para proteger determinada planilha - Nova Ajuda

Mensagempor Henry-Systems » Qua Ago 08, 2012 6:19 pm

Buenas.

Respondendo à minha própria dúvida.

Encontrei aqui no site depois de muito pesquisar as dicas de que eu precisava para resolver o meu problema.

Att

Henry-Systems escreveu:
webmaster escreveu:Henry,

O problema está nesta linha:

Código: Selecionar todos
Set ws = ActiveSheet


ActiveSheet é a planilha ativa naquele momento no Excel como um todo, e não na planilha ativa. Tente trocar para WorkSheets("NomeDaPlanilha") e veja se funciona.

Abraços


Buenas, amigo.

Estou precisando de uma ajuda neste tópico.

Descobri que ao utilizar a proteção, não consigo utilizar filtros na planilha.

A unica coisa que o usuário poderá fazer na planilha é a de utilizar o filtro.

Será que tem como utilizar um código em conjunto com a proteção para utilização de filtro?

Segue anexo o projeto 99% funcionando, só faltando a questão dos filtros.
Desde ná agradeço.

Abraços
Henry-Systems
 
Mensagens: 91
Registrado em: Sáb Nov 26, 2011 1:05 pm
Localização: Rio Grande da Serra - São Paulo
Agradecimentos dados: 18 vezes
Agradecimentos recebidos: 7 vezes

Anúncios


Voltar para VBA Básico

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante