Jump to content

Ganhe $$$ escrevendo tutoriais para nós!


Foto

Acessar planilhas somente com senhas individuais

excel




  • Faça login para responder
1 resposta(s) nesse tópico

#1 Albino Sergio

Albino Sergio
  • Participante
  • 147 mensagens

Publicado 15 June 2012 - 09:31 AM

Senhores,
ói eu aqui dinovo. rsss...
existe alguma função em que o usuario só possa acessar sua planilha com senha?
ou seja:
Um arquivo "x" com um determinado nº de planilhas, cada uma com o nome do atendente, sendo que cada atendente só possa ver sua planilha com uma senha na planilha menu, é possível?

Um abraço grande




#2 felipebenza

felipebenza
  • Participante
  • 61 mensagens

Publicado 17 June 2012 - 11:11 PM

Considere que você tem numa Pasta de Trabalho uma Planilha (que posteriormente você deverá querer deixá-la oculta, claro) chamada Senhas. Ela possui duas colunas:
A - Nome do atendente da da Planilha
B - Senha do atendente e de acesso à Planilha

Crie também uma Planilha chamada Menu.

Cole o código abaixo na classe do objeto EstaPasta_de_trabalho:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Const c_sSenhas As String = "Senhas"
    Const c_sMenu As String = "Menu"
   
    Dim lAtendente As Long
    Dim sSenha As String
    Dim sSenhaDigitada As String
   
    With ThisWorkbook
	    If Sh.Name = c_sSenhas Or Sh.Name = c_sMenu Then GoTo Fim
   
	    lAtendente = EleOf(Sh.Name, .Sheets(c_sSenhas).Columns("A"))
	    If lAtendente = 0 Then
		    MsgBox "Essa Planilha não pode ser selecionada porque " & _
			  "não está cadastrada na Planilha de senhas!" _
			  , vbCritical
		    GoTo Fim
	    Else
		    sSenha = .Sheets(c_sSenhas).Cells(lAtendente, "B")
		    sSenhaDigitada = InputBox("Digite a senha de acesso para esta Planilha:")
		    If sSenhaDigitada <> sSenha Then
			    MsgBox "Senha inválida!", vbCritical
			    GoTo Fim
		    End If
	    End If
		   
    End With
Exit Sub
Fim:
    ThisWorkbook.Sheets(c_sMenu).Select
    ThisWorkbook.Sheets(c_sMenu).Activate
End Sub
Function EleOf(ByVal vTermo As Variant, ByVal vVetor As Variant) As Long
    'Retorna o número da linha ou coluna de uma célula numa linha ou coluna.
    'Se vVetor for uma Variant(), retorna o índice do elemento no vetor.
    'Caso não seja encontrada nenhuma ocorrência, é retornado 0.
    On Error Resume Next
    Select Case TypeName(vVetor)
	    Case "Range"
		    If vVetor.Columns.Count = 1 Then
			    'vVetor é uma coluna
			    EleOf = WorksheetFunction.Match(vTermo, vVetor, 0) + vVetor.Row - 1
		    ElseIf vVetor.Rows.Count = 1 Then
			    'vVetor é uma linha
			    EleOf = WorksheetFunction.Match(vTermo, vVetor, 0) + vVetor.Column - 1
		    End If
	    Case "Variant()"
		    EleOf = WorksheetFunction.Match(vTermo, vVetor, 0)
    End Select
End Function






Tópicos Relacionados Collapse


Tópicos com palavra-chave: excel





Ganhe $$$ escrevendo tutoriais para nós!