ARTIGOS

VBA -  Criando um formulário de Login

Neste artigo vou mostrar como podemos automatizar o Microsoft Excel usando a linguagem VBA criando um formulário de login de forma a solicitar a autenticação do usuário para que ele tenha acesso a uma planilha que desejamos que tenha um acesso restrito.
Obs: Veja o meu artigo - VBA - Criando um formulário de Login - que mostra como criar um formulário de login com recurso de criptografar a senha.
É uma aplicação simples que mostra aos iniciantes e interessados como automatizar tarefas no Microsoft Excel usando a linguagem VBA. Só isso.
Os recursos usados no projeto deste artigo foram:
  • Microsoft Excel versão 2007;
  • Conhecimentos básicos sobre planilhas , células, e Visual Basic;
Antes de iniciar temos que realizar duas configurações no Microsoft Excel 2007:
  • Ativar a guia do desenvolvedor;
  • Habilitar a execução de macros;
Obs: A necessidade de habilitar a execução de macros é que por padrão, o Excel coloca um nível de segurança mais elevado pois códigos maliciosos podem ser executados em scripts através de macros no Excel.
Vamos ativar a guia do desenvolvedor e logo  em seguida habilitar a execução de macros.
Para ativar a guia do desenvolvedor (se ainda não estiver ativa) siga os seguintes passos:
Abra o Excel 2007 e ative o Menu principal de opções clicando no botão superior a esquerda, conforme a figura abaixo;
A seguir clique na guia Opções do Excel para abrir a janela - Opções do Excel;
Nesta janela, selecione o item - Mais Usados - e a seguir marque o item - Mostrar guia Desenvolvedor na Faixa de Opções e clique no botão OK;
No menu do Excel selecione a guia do Desenvolvedor e em seguida clique em Segurança de Macro;
Na janela Central de Confiabilidade selecione a opção - Configurações de Macro - e marque o item para habilitar todas as macros conforme a figura abaixo:
Pronto , feito isso já podemos iniciar o desenvolvimento da aplicação VBA no Excel 2007.
Abra então o Excel 2007 , será aberta uma planilha em branco. Clique então no botão no canto superior a esquerda para abrir o menu principal de opções;
Selecione a opção Salvar como e clique no item : Pasta de Trabalho Habilitada para Macro do Excel;
Em seguida informe o nome do arquivo : VBA_LoginExcel
Será aberta o arquivo Excel exibindo as três planilhas padrão: Plan1, Plan2 e Plan3; Vamos inserir uma nova planilha com o nome padrão de Plan4 clicando duas vezes no local ou pressionando SHIFT+F11;
Agora vamos definir o papel de cada planilha em nosso projeto Excel;
  • Plan1 - será a planilha que desejamos acessar e que deverá estar protegida;
  • Plan2 - será a planilha onde vamos armazenar os dados do usuário : login e senha;
  • Plan3 - será a planilha que será apresentada quando abrirmos o arquivo Excel servindo como fundo para formulário de Login ;
  • Plan4 - Usaremos esta planilha para armazenar os dados do usuário que acessou a planilha e a data de acesso;
Vamos começar com a planilha Plan1
Essa planilha será exibida somente se o usuário for corretamente autenticado através de Login e Senha;
Geralmente essa planilha deverá conter dados restritos mas no nosso exemplo iremos apenas exibir a planilha e uma imagem.
Vamos incluir um controle Imagem nesta planilha.
Selecione a planilha Plan1 e clique no menu Desenvolvedor e a seguir no ícone Inserir;
Selecione o controle Imagem;
Arraste-o e dimensione-o na planilha Plan1 e a seguir clique na opção Propriedades para exibir a janela de Propriedades;
Selecione a propriedade Picture e na janela de Diálogo - Carregar Figura - escolha uma imagem para ser exibida no controle;
Ao final defina a propriedade PictureTiling como True e digite um texto acima da imagem com os dizeres: Formulário Principal - Área Restrita;
A planilha final deverá ter a seguinte aparência. (Fique a vontade para colocar nesta planilha o que melhor lhe convier)
Definindo a planilha Plan3
A planilha Plan3 deverá servir apenas como fundo para o formulário de login que iremos exibir quando o arquivo Excel for aberto.
Vamos então realizar os mesmos procedimentos feitos com a planilha Plan1 e incluir uma controle Imagem nesta planilha e definir uma imagem e um texto;
Abaixo temos o resultado final da planilha Plan3:
Definindo a planilha Plan2
Na planilha Plan2 vamos armazenar os dados do usuário, seu login e senha.
Para isso vamos usar as células A e B e definir os dados conforme a figura abaixo:
Nesta planilha temos dois usuários definidos: Macoratti e Admin e suas respectivas senhas. Poderíamos definir mais usuários a nosso critério.
Definindo a planilha Plan4
A planilha Plan4 será usada para registrar o acesso feito pelo usuário a senha e a data de acesso.
Assim que o usuário realizar a autenticação, se ela for bem sucedida iremos gravar as essas informações na planilha Plan4.
Dessa forma iremos apenas definir nas células A, B e C o conteúdo conforme imagem a seguir:
Agora que ja definimos o papel e os dados de cada planilha vamos criar o formulário de Login.
Criando o formulário de Login
Com a planilha Excel aberta pressione as teclas ALT+F11. Se preferir clique no menu Desenvolvedor e a seguir na opção Visual Basic.
Isso abrira o Editor Visual Basic; No editor Visual Basic clique no menu Inserir e a seguir em UserForm;
m novo formulário chamado UserForm será criado na área de trabalho do Editor.
Ao seu lado irá aparecer a Caixa de Ferramentas contendo os controles que vamos usar para criar o formulário;
À sua direita temos a Janela de Propriedades do controle selecionado que iremos usar para definir o nome e outras propriedades dos controles;
Vamos então arrastar a partir da caixa de ferramentas os seguintes controles para o formulário e a seguir vamos alterar as propriedades indicadas conforme abaixo:
  • 1 Formulário = name= frmLogin, Caption= Login e backColor=&H00000000&(preto)
  • 2 Caixas de Texto : name= txtLogin , name= txtSenha , PasswordChar = *
  • 2 Rótulos = Caption = Usuario , Caption = Senha
  • 2 Botões de Comando = name= cdmEntrar / Caption=Entrar ,  name=cmdCancelar / Caption=Sair
De forma que leiaute do formulário tenha a seguinte aparência:
Agora vamos definir o código necessário para realizar a autenticação do usuário e assim permitir ou não o seu acesso a planilha Excel Plan1.
Para isso vamos usar o evento Click do botão cmdEntrar.
Clique duas vezes no botão Entrar para abrir o evento Click associado a este botão de comando ou clique com o botão do mouse sobre o botão e a seguir clique em Exibir Código;
Digite o código abaixo no evento Click do botão Entrar :
Private Sub cmdEntrar_Click()
         If txtLogin = "" Then
            MsgBox "Digite o nome do usuário !"
            Exit Sub
            txtLogin.SetFocus
        Else
          If txtSenha = "" Then
                MsgBox "Digite a senha do usuário !"
                Exit Sub
                txtSenha.SetFocus
          End If
        End If

        col = 1
        lin = 2
        While (Plan2.Cells(lin, col) <> txtLogin)
            lin = lin + 1
            If lin > 50 Then
                MsgBox "Usuário não esta cadastrado"
                Exit Sub
            End If
        Wend

        Dim senha As String
        lin = 2
        col = 2
        senha = Plan2.Cells(lin, col).Value

        If txtSenha <> senha Then
            MsgBox "A senha não confere !!"
            Exit Sub
        Else
            MsgBox "Seja Bem Vindo " & txtLogin
            lin = 2
            col = 1
            While (Plan4.Cells(lin, col) <> "")
                lin = lin + 1
            Wend
            Plan4.Cells(lin, 1) = txtLogin.Value
            Plan4.Cells(lin, 2) = txtSenha.Value
            Plan4.Cells(lin, 3) = Date
            Plan1.Visible = xlSheetVisible
            Sheets("Plan1").Activate
            ActiveWindow.DisplayWorkbookTabs = False
            Hide
        End If
End Sub
Vamos entender o código:
         If txtLogin = "" Then
            MsgBox "Digite o nome do usuário !"
            Exit Sub
            txtLogin.SetFocus
        Else
          If txtSenha = "" Then
                MsgBox "Digite a senha do usuário !"
                Exit Sub
                txtSenha.SetFocus
          End If
        End If
Verificamos se o nome do usuário foi informado
em caso positivo verificamos se a senha foi informada.
 
        col = 1
        lin = 2
        While (Plan2.Cells(lin, col) <> txtLogin)
            lin = lin + 1
            If lin > 50 Then
                MsgBox "Usuário não esta cadastrado"
                Exit Sub
            End If
        Wend
Percorremos a planilha Plan2 a partir da linha 1 e coluna 2 e verificamos se o valor é igual ao nome do usuário;Percorremos até a linha 50 e se nada for encontrado então saímos da rotina;
        Dim senha As String
        col = 2
        senha = Plan2.Cells(lin, col).Value
Se o nome foi encontrado obtemos a respectiva senha na coluna 2 e linha onde o nome foi encontrado;
        If txtSenha <> senha Then
            MsgBox "A senha não confere !!"
            Exit Sub
        Else
            MsgBox "Seja Bem Vindo " & txtLogin
            lin = 2
            col = 1
            While (Plan4.Cells(lin, col) <> "")
                lin = lin + 1
            Wend
            Plan4.Cells(lin, 1) = txtLogin.Value
            Plan4.Cells(lin, 2) = txtSenha.Value
            Plan4.Cells(lin, 3) = Date
            Plan1.Visible = xlSheetVisible
            Sheets("Plan1").Activate
            ActiveWindow.DisplayWorkbookTabs = False
            Hide
        End If
Verificamos se a senha informada é igual a
obtida da planilha Plan2;Em caso positivo armazenamos na planilha Plan4 os valores de login, senha e data de hoje;
Exibimos a planilha Plan11
Ativamos a planilha Plan1
e escondemos a planilha atual.
 
Agora vamos definir o código do evento Click do botão cmdSair.
Clique duas vezes no botão Sair para abrir o evento Click associado a este botão de comando ou clique com o botão do mouse sobre o botão e a seguir clique em Exibir Código;
Digite o código abaixo no evento Click do botão Sair :
Private Sub cmdCancelar_Click()
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    Application.Quit
End Sub
O código acima inibe as mensagens de alerta do Excel , salva o workbook e sai do Excel.
Vamos definir também o código do evento Terminate do formulário frmLogin. Selecione o formulário e clique com o botão direito do mouse e a seguir clique em Exibir Código;
Na janela de código selecione UserForm e o evento Terminate;
A seguir digite o código abaixo neste evento:
Private Sub UserForm_Terminate()
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    Application.Quit
End Sub
Exibindo o formulário de Login
Queremos que quando o usuário abra a  pasta de trabalho, e por consequência a planilha, o formulário de login seja apresentado para informação do usuário e senha e a planilha Plan3 seja a planilha de fundo.
Para isso temos que usar o evento Activate da pasta de trabalho (WorkBook);
No editor de código VBA clique com o botão direito do mouse sobre o item EstaPasta_de_trabalho e selecione o item Exibir Código;
A seguir inclua o código conforme mostra a figura baixo no evento Activate do WorkBook:
O código acima exibe a planilha Plan3 e em seguida o formulário de login:
Ao informar o usuário e senha corretos é exibida uma mensagem de boas vindas ao usuário:
Na planilha Plan4 vemos os dados que foram armazenados referente ao login efetuado:
Dessa forma mostramos uma outra forma de criar um formulário de Login usando VBA e o Excel.
Pegue a planilha com o código VBA aqui: VBA_LoginExcel.zip

Nenhum comentário:

Postar um comentário