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;
- Ativar a guia do desenvolvedor;
- Habilitar a execução de macros;
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;
![]() |
![]() |
No menu do Excel selecione a guia do Desenvolvedor e em seguida clique em Segurança de Macro;
![]() |
![]() |
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;
![]() |
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;
![]() |
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;
![]() |
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 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:
![]() |
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:
![]() |
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:
![]() |
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;
![]() |
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;
![]() |
- 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
![]() |
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
|
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. |
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
|
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;
![]() |
Private Sub UserForm_Terminate()
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.Quit
End Sub
|
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:
![]() |
![]() |
![]() |
![]() |
Pegue a planilha com o código VBA aqui:

Nenhum comentário:
Postar um comentário