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.