Quer retornar mais segurança aos seus documentos do Excel? Deseja restringir seu acesse utilizando campos de login? A partir de comandos VBA é possível criar uma tela de login para acesso às informações contidas no documento, mediante usuário e senha.

O Excel possui diversas formas de retornar segurança aos dados colocados em suas planilhas, através de senhas de proteção, bloquear determinadas células ou criar objetos por meio de linhas de comando onde se pode definir usuário e senha de acesso. O método que iremos ensinar neste tutorial consiste em uma tela de login onde será criado um usuário e uma senha para serem colocados toda vez que o documento for aberto. Caso a pessoa que for acessá-lo errar ou não souber a senha, o documento se fechará.

Para utilizarmos os comandos VBA e as demais configurações que este dispõe, devemos ter ativo no Excel a aba Desenvolvedor, responsável por trazer estas ações. Se você não a tem ativa, acesse este outro tutorial e a ative de forma simples e rápida.

Para darmos início ao processo abra um documento em branco e crie uma nova planilha chamada "Senha" e nela as colunas "Usuário", "Senha" e "Formulário". Aqui você irá definir a quais planilhas (chamamos de "formulário") o usuário tem acesso, seu login e sua senha. Lembrando que o administrador deve ter acesso à planilha "Senha", ok? Pois só assim ele poderá adicionar novos users, novas senhas, mudar permissões de acesso, etc.

Imagem

Repare que devemos repetir o processo para todos as planilhas que o usuário tiver acesso. No exemplo acima dei acesso ao admnistrador para todos os locais.

Criando a tela de login

A criação da tela é uma das etapas mais importante e um pouco mais complexa que as demais. Vá à aba Desenvolvedor e clique em Visual Basic, onde seremos direcionados á janela de edição de comandos VBA. (se não estiver vendo a guia desenvolvedor, clique aqui e coloque-a disponível em questões de minutos).

Imagem

Na janela de edição, clique em Inserir e após em UserForm. Para nomear e ajustar o formulário localize o quadro de propriedades, localizado no lado esquerdo do mesmo. Nele, altere as seguintes informações: No campo Caption vocêcolocará Login e no campo (name) coloque frmLogin. Para ficar mais bonito vamos colocar um fundo preto escolhendo backColor=&H00000000&(preto) em BackColor Observe o resultado:

Imagem

Crie um botão de comando e altere o campo Caption para OK.

Imagem

Agora crie dois rótulos, representados pelo ícone com a letra "A". Em um deles iremos mudar o Caption para Usuário e outro para Senha. Para mudar o tamanho e o formatar o texto como achar melhor é só clicar nos 3 pontinhos ao lado da fonte, localizado entre as propriedades do rótulo. E se você colocou a caixinha na cor preta terá que colorir as palavras para a letra branca para ficar visível, é claro. Faça isso no campo ForeColor.

Imagem

Agora é só criar as caixas de texto onde o usuário irá colocar login e senha. Para isso vá no botãozinho que tem o "Ab". Naquela que for referente ao nome do usuário você irá mudar o campo (Name) para txtUsuario - sem acento mesmo -  e aquela que for da senha para txtSenha. Ahh, e esta da senha precisa ter o campo PasswordChar com um *. Assim sua senha sairá criptografada.  

Imagem

 Agora, vamos adicionar as linhas de comando do botão OK. Dê dois clique nele e na janela de edição que se abrir cole o seguinte código:

Private Sub CommandButton1_Click()
  Dim lTotal As Long
  Dim lContador As Long

  lsDesabilitar

    Sheets("Senha").Range("$A$1:$C$50000").AutoFilter Field:=1, Criteria1:="=" & txtUsuario.Text
    Sheets("Senha").Range("$A$1:$C$50000").AutoFilter Field:=2, Criteria1:="=" & txtSenha.Text

  lTotal = WorksheetFunction.Subtotal(3, Sheets("Senha").Range("A:A"))

  If lTotal > 1 Then
  ActiveWorkbook.Unprotect Password:="123"

    For lContador = 2 To lTotal
    Sheets(Sheets("Senha").Range("C" & lContador).Value).Visible = True
  Next lContador

  Unload frmLogin
    Else
    MsgBox "Usuário ou senha incorretos!"
  End If

  ActiveWorkbook.Protect Password:="123", Structure:=True, Windows:=False
  End Sub

  Private Sub txtUsuario_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  KeyAscii = Asc(UCase(Chr(KeyAscii)))
  End Sub

  Private Sub UserForm_Activate()
  txtUsuario.SetFocus
  End Sub

  Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 13 Then 
  SendKeys "{tab}" 
  KeyAscii = 0 
  End If
End Sub

Imagem

O próximo passo é agora ir novamente na guia inserir e depois em Módulo. Repare que o que está em vermelho refere-se ao nome que consta em minhas planilhas. Adapte ao seu caso, ok? E se adicionar mais planilhas não esqueça de vir aqui e adicionar mais uma linha de código para ela.

Public Sub lsShow()
  frmLogin.Show
  End Sub

  Public Sub lsDesabilitar()
  ActiveWorkbook.Unprotect Password:="123"
    Sheets("Contas").Visible = False
    Sheets("Compras").Visible = False
    Sheets("Gastos").Visible = False
    Sheets("Senha").Visible = False
  ActiveWorkbook.Protect Password:="123", Structure:=True, Windows:=False
End Sub

O próximo passo é dar 2 cliques em "EstaPasta_de_trabalho" e colar o seguinte código na janelinha de edição que foi aberta:

Private Sub Workbook_Open()
  lsDesabilitar
End Sub

Imagem

Agora vá lá na planilha e crie uma planilha chamada "Menu". Nela vamos criar um botão, conforme já aprendemos nesta aula. Depois você clica com o botão direito nele e em "Atribuir macro...". Na nova janela que aparecer selecione "isShow" e dê um ok.

Imagem

Protinho. Agora feche a janela e salve seu documento como Modo Habilitado para Macro, caso contrário, todo trabalho será perdido.

Imagem

Agora, toda vez que algum usuário tentar acessar seu documento precisará entrar com login e senha. Abaixo o download da mesma para você ver como ficou nosso trabalho.

 A senha para você começar a usar é 123 e o login é ADM.

Imagem

Problemas com o download?

Veja nosso tutorial e saiba como resolver qualquer tipo de problema que você enfrentar para baixar, abrir ou executar nossas planilhas.

Versão 2.0

Refizemos totalmente o código e as explicações, hoje, dia 20/10/2015. Modelo novo e funcionando 100%.

Post otimizado com contribuição do Guia do Excel.