Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Albino Sergio

Acessar planilhas somente com senhas individuais

4 posts neste tópico

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

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

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


Felipe Costa Gualberto

Microsoft Excel MVP

http://www.ambienteoffice.com.br

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Senhores,

Infelizmente não consegui montar esse arquivo com nome e senhas, não teria como enviar-me um arquivo feito para eu pesquisar melhor?

um abraço grande

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Albino.

Há soluções mais simples e mais seguras para permitir o acesso a planilhas somente por meio de senha, se for esse o seu objetivo.

Para podermos tentar ajudá-lo é preciso que você descreva com exatidão qual é a sua necessidade.


Osvaldo

como disponibilizar arquivos neste fórum: abaixo da última postagem, clique em "Editor Completo" / "Selecionar arquivo..." / na sua máquina localize e clique no nome do arquivo que deverá estar compactado com extensão .zip

alternativa - hospede o arquivo em um site como www.sendspace.com >> é gratuito, sem cadastro, sem compactar, e depois coloque o link no seu post

dica - disponibilize amostra do seu arquivo com estrutura exatamente igual ao original

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
    • 12 Mensagens
    • 276 Visualizações
    • 3 Mensagens
    • 114 Visualizações
    • 2 Mensagens
    • 234 Visualizações
    • 3 Mensagens
    • 537 Visualizações
    • 1 Mensagens
    • 138 Visualizações