Uma família de softwares de planilhas da Microsoft com ferramentas para analisar, criar gráficos e comunicar dados
Olá,
Minha noiva estava com o mesmo problema depois que fiz algumas macros pra ela, então a solução que encontrei foi criar uma macro com login e senha para entrar na planilha, funciona muito melhor, de maneira mais eficaz que a senha de acesso convencional.
Para isso você vai precisar criar um userform, com 6 coisas nele, 2 labels, 2 caixas de texto e 2 botões de comando.
(vou mandar uma foto do meu userform de login da minha planilha de imposto de renda, vc tira uma ideia de lá)
Depois de finalizar o designe dela, vai precisar definir o comando de cada botão; meus códigos são os seguintes e vou tentar explica-los:
Dei o nome CANCELAR ao botão Cancelar, então: serve pra sair do userform e fechar a planilha.
_____________________________________________
Private Sub CANCELAR_Click()
Unload Me
ThisWorkbook.Close
End Sub
____________________________________________________
Dei o nome ENTRAR ao botão Entrar; nomeei caixa de texto de login de CAIXA_LOGIN; nomeei caixa de texto senha de CAIXA_SENHA
É só mudar os nomes das planilhas entre "aspas duplas" para o nome das suas, e mudar login e senha como preferir em cada nível de acesso.
Fique tranquilo, o xlsheetveryhidden não permite que a pessoa "desoculte" as outras, elas só podem ser mostradas novamente VIA MACRO.
Portanto, também coloque senha nas macros (não lembro de cor, mas pesquisa no youtube que acha).
_____________________________________________________
Private Sub ENTRAR_Click()
'KCG_IR_LOGIN
Application.ScreenUpdating = False 'TELA NÃO PISCA
Dim USUARIO As String
Dim SENHA As String
USUARIO = CAIXA_USUARIO.Text
SENHA = CAIXA_SENHA.Text
'DEFALT (nível de acesso 1)
If USUARIO = "USUARIO" And SENHA = "123" Then
Sheets("planilha1").Visible = xlSheetVisible
Sheets("planilha2").Visible = xlSheetVeryHidden
Sheets("planilha3").Visible = xlSheetVeryHidden
MsgBox ("SEJA BEM VINDO.")
'TRADER (nível de acesso 2)
ElseIf USUARIO = "seulogin1" And SENHA = "suasenha1" Then
Sheets("planilha1").Visible = xlSheetVisible
Sheets("planilha2").Visible = xlSheetVisible
Sheets("planilha3").Visible = xlSheetVeryHidden
MsgBox ("SEJA BEM VINDO!")
''MIKAEL (nível de acesso 3)
ElseIf USUARIO = "seulogin2" And SENHA = "suasenha2" Then
Sheets("planilha1").Visible = xlSheetVisible
Sheets("planilha2").Visible = xlSheetVisible
Sheets("planilha3").Visible = xlSheetVisible
MsgBox ("SEJA BEM VINDO, NOVAMENTE, seunome.")
'incorreto
Else
MsgBox ("USUARIO OU SENHA INCORRETOS")
CAIXA\_SENHA.Text = ""
Exit Sub
End If
Application.Visible = True
Unload Me
End Sub
_________________________________________________
O código abaixo só serve pra desabilitar o X de fechar o userform, é bom por, por segurança
_________________________________________________
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub
____________________________________________
Depois disso feito há um último trabalho, que é fazer a segurança da planilha, você vai precisar colocar o seguintes códigos na pasta de trabalho geral (EstaPastaDeTrabalho)
O nome da minha userform é LOGIN_SKYRIM, substitua onde for assim, pelo seu
A finalidade destes códigos é, respectivamente: garantir que sempre que a planilha for fechada, só a planilha de nível de acesso 1 fique à mostra (pois toda vez que move a planilha de lugar, as macros são desabilitadas por segurança, então se tivesse salvo com seu acesso, alguém que movesse veria seu acesso; não mostrar a planilha em si assim que abrir o Excel, apenas a userform.
______________________________________________________
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False 'TELA NÃO PISCA
Sheets("planilha1").Visible = xlSheetVisible
Sheets("planilha2").Visible = xlSheetVeryHidden
Sheets("planilha3").Visible = xlSheetVeryHidden
End Sub
Private Sub Workbook_Open()
Application.ScreenUpdating = False 'TELA NÃO PISCA
Application.Visible = False
LOGIN_SKYRIM.Show
End Sub
___________________________________________________
Acho que é só, boa sorte!