Baixe o app para aproveitar ainda mais
Prévia do material em texto
21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 1/15 VBA ‐ Criando um formulário de Login (revisitado) 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; 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 2/15 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; 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 3/15 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; 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 4/15 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; 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 5/15 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; 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 6/15 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; 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 7/15 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: 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 8/15 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; 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 9/15 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 !" 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 10/15 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 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 Verificamos se o nome do usuário foi informado 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 11/15 If txtSenha = "" Then MsgBox "Digite a senha do usuário !" Exit Sub txtSenha.SetFocus End If End If 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 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 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 12/15 Hide End If 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: 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 13/15 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: 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 14/15 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 Salmos 5:9 Porque não há fidelidade na boca deles; as suas entranhas são verdadeiras maldades, a sua garganta é um sepulcro aberto; lisonjeiam com a sua língua. Salmos 5:10 Declaraos culpados, ó Deus; que caiam por seus próprios conselhos; lançaos fora por causa da multidão de suas transgressões, pois se revoltaram contra ti. Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Curso Básico VB .NET ‐ Vídeo Aulas Quer aprender C# ?? Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#. Curso C# Basico ‐ Video Aulas VBA ‐ Cadastro de Clientes (Excel) VBA ‐ Cadastrando clientes e env iando emails ‐ Macoratti.net VBA‐Integrando aplicativos Office ‐ Macoratti.net VBA ‐ Agenda de Visitas (Excel) ‐ Macoratti.net 21/12/2017 VBA Criando um formulário de Login http://www.macoratti.net/12/12/vba_lgn1.htm 15/15 Visão geral do modelo de objeto Excel: http://msdn.microsoft.com/pt‐ br/library/wss56bz7.aspx Seção VBA do Site VBA ‐ Visual Basic for Aplications ‐ Macoratti.net VBA ‐ Criando um formulário de Login José Carlos Macoratti
Compartilhar