Como Criar Tela de Login no Excel VBA

Veja neste artigo passo-a-passo como criar uma tela de login no Excel com VBA.

No resultado final criaremos uma tela de login que ao realizar o login iremos exibir ou ocultar planilhas conforme o usuário.

Criar a Planilha de Controle de Acesso

Para o controle de acesso nós criamos uma planilha com os seguintes campos:

  • Usuário: Neste campo temos o nome do usuário, ele irá se repetir.
  • Senha: Coloque a senha que irá se repetir também para o mesmo usuário.
  • Formulário: E em formulário, ou podemos chamar também de planilha, você coloca o nome da planilha.

Eles serão utilizados para filtrar e liberar as planilhas conforme o usuário do login.

Criando o Formulário do Login VBA

A tela de login Excel será criada no VBA.

Para isso você deve inicialmente habilitar as macros neste link.

Após isto acesse em ALT+F11 ou clique na guia Desenvolvedor e em Visual Basic.

No VBA clique em Inserir -> Formulário e altere a propriedade name para frmLogin.

Em seguida clique no botão com as ferramentas conforme acima e abra a caixa de ferramentas.

Nele nós desenhamos usando o componente Rótulo ou Label para desenhar o texto na tela.

Altere a propriedade Caption colocando Login.

Adicione outros dois com os nomes Usuário e Senha.

Em seguida abra o Powerpoint e desenhe uma linha, ela será colada abaixo do login

Volte para o VBA e insira o objeto Imagem, desenhando logo abaixo de Login.

Volte ao powerpoint e copie a imagem, e depois na propriedade picture do componente Imagem que adicionou cole.

Clique agora na caixa de ferramentas e adicione o componente Caixa de Texto ou TextBox.

Adicione um para Usuário e outro para Senha, altere o name para txtUsuario e txtSenha respectivamente.

E por fim adicione o botão no componente Button ou Botão da caixa de ferramentas do VBA Excel.

Feito isso nós temos então o formulário pronto.

Código VBA para o Login

Agora vamos inserir os códigos VBA para realizar o login

Clique em Inserir -> Módulo e no módulo criado coloque o seguinte código:

Public Sub lsShow()
    frmLogin.Show
End Sub

Public Sub lsDesabilitar()
    On Error Resume Next

    ActiveWorkbook.Unprotect Password = "123"
        
    Plan1.Visible = xlSheetVeryHidden
    Plan2.Visible = xlSheetVeryHidden
    Plan3.Visible = xlSheetVeryHidden
    Plan4.Visible = xlSheetVeryHidden
    
    ActiveWorkbook.Protect Password:="123", Structure:=True, Windows:=False
End Sub

Então temos acima o código em lsShow para exibir o formulário e em lsDesabilitar um código para ocultar todas as planilhas e proteger a estrutura.

Agora vamos inserir o código para o formulário VBA.

Clique então no formulário dando duplo clique no formulário e depois colando o seguinte código:

Private Sub CommandButton1_Click()
    Dim lTotal      As Long
    Dim lContador   As Long
    Dim lResultado  As String
    
    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
        
        Unload frmLogin
    Else
        lResultado = MsgBox("O login está incorreto" + vbCrLf + "Tentar novamente?", vbYesNo, "Login incorreto")
        
        If lResultado = vbYes Then
            frmLogin.txtUsuario.SetFocus
        Else
            Application.Visible = True
            ThisWorkbook.Save
            ThisWorkbook.Close
        End If
    End If
    
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_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Cancel = True
    End If
End Sub

Em txtUsuario_KeyPress você tem um código para colocar em maiúsculo todos os dados digitados.

No UserForm_Activate ele dá foco no campo txtUsuario.

Em userForm_QueryClose ele irá bloquear para fechar a tela de login pelo botão X no topo.

No botão CommandButton1_Click nós temos então a verificação do login aonde irá filtrar o usuário e senha conforme digitado e então se for encontrado é feito um loop e liberadas as planilhas que aparecem no filtro.

Por fim, clique em EstaPasta_de_Trabalho e cole o seguinte código que vai abrir o formulário ao abrir a pasta de trabalho.

Private Sub Workbook_Open()
    lsDesabilitar
    frmLogin.Show
End Sub

O resultado é a tela acima, recomendo também assistir o vídeo ao topo deste artigo, aonde é demonstrado a criação desde o zero, e abaixo temos também o download da planilha.

Os usuários e senhas para teste são:

  • Usuário: ADM
  • Senha: 123456

ou

  • Usuário: MARCOS
  • Senha: 123

Download

Realize o download da planilha deste artigo no botão abaixo. Basta se inscrever na nossa newsletter gratuita para o download automático.

Baixe a planilha

Avalie este post

Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel

plugins premium WordPress