Ir ao conteúdo
  • Cadastre-se
André Costa TI

Tela de login vba ser executada apenas uma vez

Recommended Posts

Olá colegas..

 

Fiz uma planilha que, ao abri-la exibe uma tela de login. Digitando os critérios solicitados, ela dá acesso ao sheet principal - (a guia que está sendo protegida). Nesse sistema tem os bancos de dados, que armazena o registro de acesso de cada usuário à planilha, e outro banco de dados que contém o Login e Senha de cada usuário. Tudo isso que citei, eu já consegui fazer sem nenhum problema, porém, preciso que se um usuário padrão da planilha tentar reexibir os bancos de dados, uma tela de login de Administrador da planilha seja exibida, solicitando o Login e Senha do administrador. A tela de login de Administrador eu também já fiz, só que o problema é que toda vez que as abas de banco de dados são selecionadas, a tela novamente é exibida, e preciso que essa tela seja exibida apenas uma única vez na planilha, até ela ser fechada. O código que fiz em cada sheet para abrir a tela de Administrador é:

Private Sub WORKSHEET_ACTIVATE()
Application.Visible = False
UserForm3.Show
Exit Sub
End Sub

 

Se puderem me ajudar, ficarei grato.

Sistema de proteção à planilhas.rar

Editado por André Costa TI

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você pode fazer é ao executar o codigo que libera o acesso a planilha é registar esse login e senha em alguma celula da planilha e no codigo active verificar se as celulas estiverem preenchidas você sai do codigo active e nao executa o formulario.

 

Assim so vai executar o formulario uma vez enquanto o arquivo nao for fechado.

 

E  no Evento antes de fechar em Esta Pasta de Trabalho limpar as celulas que registrao que foi feito o login de administradot.

 

Outra coisa no seu codigo Exit Sub antes de End Sub nao faz diferença neste caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@André Costa TI faça uma declaração global do usuario logado.

Por exemplo em um modulo padrão declare: Public Usuario_padrao As String

No userform de login, apos o usuario logar, associe o usuario logado a variavel Usuario_padrao:

Usuario_padrao = Textbox_usuario 

Desta forma a variavel ficara 'carregada' com o nome do usuario logado, sendo assim voce coloque uma condição no inicio do userform login verificando se esta variavel esta carregada ou não. Veja o exemplo abaixo:

 

	Public Usuario_padrao As String
	Sub acesso()
    Dim loginUser As String
    
    If Usuario_padrao = "" Then
    loginUser = InputBox("Insira a senha", "Controle de acesso")
    If loginUser = "admin" Then
    Usuario_padrao = loginUser
    MsgBox Usuario_padrao & " logado!", 0, "Aviso"
    Exit Sub
    Else
    MsgBox "senha incorreta"
    End If
    
    End If
End Sub
	Sub sair()
    Usuario_padrao = ""
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Basole @Basole No caso esses códigos seriam colocados onde? 

 

Editei o post, e coloquei a planilha de exemplo.

 

O Login é andre e a senha é 123 .

Reexiba as planilhas de banco de dados como citei no post, e veja.. toda vez o UserForm ADMIN é exibido, e preciso que seja exibido apenas uma vez,

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Basole Ah sim!..   Eu consegui fazer aqui com uma "gambiarra" kk...  Assim que faço o login como administrador a macro escreve em uma célula o meu usuário, e toda vez que abro o sheet, a macro verifica se há ou não o nome de usuário na célula determinada.. Se houver, não abrirá o UserForm, caso contrário, abrirá.   

Se eu fechar a planilha, o nome continuará lá, mas quando eu fizer o login como usuário padrão a propria macro exclui o valor da célula, assim fazendo o que eu quero!

 

 

Obrigado pela ajuda de todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente é gambiarra!

 

Em termos de proteção de dados é zero. Qualquer pessoa mais instruida pode descobrir a senha do administrador. 

 

Do modo que apresentei, funcionou aqui pra mim, perfeitamente, não expondo os dados.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Basole Kkk mas porque zero proteção? Pois a própria aba que contém o usuário do administrador requer o acesso de adm o_O

Compartilhar este post


Link para o post
Compartilhar em outros sites

@André Costa TI Entenda uma coisa proteção em Excel é igual trancar a porta de sua casa e colocar a chave de baixo do tapete com um aviso pendurado na porta. "Chave debaixo do Tapete." Praticamente nao adianta nada, se o usuario nao habilitar macros simplesmente os códigos nao funcionam e sua falsa proteção nao existe mais.

 

A unica senha que oferece uma certa dificuldade para acessar os dados, mas nao ajuda em nada tambem, ja que ela bloqueia o acesso todo ao arquivo, e a senha de abertura que você coloca quando salvar o arquivo.

 

Tudo que se faz a titulo de proteção é apenas para dificultar o acesso aos dados e evitar que o usuario literalmente faça bobagens do tipo apagar formulas e dados indevidamente, mas isso depende principalmente do nivel de conhecimento do seu usuario final, e nao precisa ser um expert no assunto para quebrar a proteção.

 

A MS infelizmente nao tem essa preocupação com a proteção dos dados, nem estão pouco com a propriedade intelectual.

 

Quebrar senha do VBA é algo muito simples de se fazer. 

 

Dessa forma sugiro que você nao gaste energia e tempo com a proteção do seu arquivo, pois na maioria das vezes é perca de tempo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×