Logo Hardware.com.br
ranzo312
ranzo312 Novo Membro Registrado
15 Mensagens 0 Curtidas

Qual comando ultilizar para exibir mensagem de acesso negado após apertar botão no Excel com VB

#1 Por ranzo312 09/07/2015 - 11:12
Fala pessoal, sou novo aqui no fórum e queria uma ajuda de voces. Estou desenvolvendo uma interface em Excel que possui varios botões que ao serem pressionados vao ate uma determinada pasta no windows, algumas dessas pastas sao bloqueadas para que somente algumas pessoas tenham acesso. Queria saber se teria algum codigo em visual basic para exibir uma mensagem de acesso negado para pessoas que nao tiverem acesso a essas determindas pastas ?
ranzo312
ranzo312 Novo Membro Registrado
15 Mensagens 0 Curtidas
#3 Por ranzo312
09/07/2015 - 21:47
Esse é o problema, quando uma pessoa aperta um botao que nao tem acesso é aberta a pasta dos meus documentos do windows, provavelmente deve ser um caminho logico pro windows. Eu queria que ao inves de ir para os meus documentos aparecesse uma mensagem de erro dizendo que o acesso é invalido, o problema é que nao sei como restringir com uma estrutura de decisao esse acesso.
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#4 Por Basole
09/07/2015 - 23:09
Tente este ex. abaixo:
Ao tentar acessar a pasta, se o usuario nao tiver o previlegio, aparece a msg e a macro interronpe a execução.

Sub Verif_Acesso()
Dim user As String
Dim Status As Boolean

user = "Zé" ' AQUI Insira o cirterio para o status de previlegios do usuario
If user = "Zé" Then Status = True
If user = "Mané" Then Status = False

If Status = True Then
MsgBox user & ", voce não tem previlegios para acessar esta pasta de arquivos", _
vbCritical, "Atenção"
Exit Sub
Else
'Aqui: insira seu codigo para abrir a pasta
End If
End Sub
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
ranzo312
ranzo312 Novo Membro Registrado
15 Mensagens 0 Curtidas
#5 Por ranzo312
10/07/2015 - 09:29
Obrigado mano, deu certo. Surgiu uma outra duvida, onde eu trabalho tem 30 usuarios entao queria saber se teria como eu restringir para tres usuarios terem acesso a pasta selecionada e os outros 27 usuarios nao terem acesso ?


Basole disse:
Tente este ex. abaixo:
Ao tentar acessar a pasta, se o usuario nao tiver o previlegio, aparece a msg e a macro interronpe a execução.

Sub Verif_Acesso()
Dim user As String
Dim Status As Boolean

user = "Zé" ' AQUI Insira o cirterio para o status de previlegios do usuario
If user = "Zé" Then Status = True
If user = "Mané" Then Status = False

If Status = True Then
MsgBox user & ", voce não tem previlegios para acessar esta pasta de arquivos", _
vbCritical, "Atenção"
Exit Sub
Else
'Aqui: insira seu codigo para abrir a pasta
End If
End Sub
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#6 Por Basole
10/07/2015 - 16:40
Sim tem sim, mas para isso os usuarios precisam logar para poderem ter acesso a planilha e para a rotina saber quem está acessando, e ai voce cria uma planilha(aba, protege-a e deixe-a oculta) para cadastrar esses usuarios e dar os respectivos previlegios ex.: coluna X: "Zé", coluna Z: "Sim" ; coluna X: "Mané", coluna Z: "Não" .
Depois disso no codigo acrescenta o recurso de pesquisar as informaçoes desses usuarios.
Se puder compartilhar sua planilha ou um modelo bem proximo dela fica mais facil aplica-las o descrito acima sem ter q alterar depois o codigo.
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#10 Por Basole
13/07/2015 - 16:30
Altere esse trecho:
Private Sub UserForm_Initialize()
' verif. status do usuario -> se for SIM habilita o botao AIC, caso contrario desabilita
ProcuraStatusUsuario UsuarioAtual, UserSt
If UserSt = "NÂO" Then
Me.AIC.Enabled = False
Else
Me.AIC.Enabled = True
End If
End Sub
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#13 Por Basole
20/07/2015 - 19:04
A rotina cria/edita um arquivo texto chamado "RelatorioUser.txt" na mesma pasta* que estiver sua planilha, com o nome do suario e a data/horario que logou.

* altere de acordo c/ sua pref.
* cole o cod. abaixo em um modulo
Sub RelatorioACessos()
Dim strFile_Path As String
strFile_Path = ThisWorkbook.Path & "\RelatorioUser.txt" 'AQUI: altere o diretorio (ex: "C:\Temp\RelatorioUser.txt&quot onde seja savar
Open strFile_Path For Append As #1
Print #1, UsuarioAtual & ", logou em: "; Format(Now, "dd/mm/yyyy HH:MM:SS&quot
Close #1
End Sub

*abaixo seu codigo do botao [Entrar] do form. login, que chama a rotina acima:
Private Sub CommandButton1_Click()
If Chave = "" Then
MsgBox "Digite o nome do usuário !!!"
Chave.SetFocus
Exit Sub
Else
If Senha = "" Then
MsgBox "Digite a senha do usuário !!!"
Senha.SetFocus
Exit Sub
End If
End If

'Varrer Planilha

For i = 2 To 4
Celula1 = Cells(i, 1).Value
Celula2 = CStr(Cells(i, 2).Value)
Celula3 = (Cells(i, 3).Value)


If Chave = Celula1 And Senha = CStr(Celula2) Then
MsgBox "Bem-Vindo"

UsuarioAtual = Chave ' define o usuario atual (Com declaração Global "Public UsuarioAtual as STring" no modulo 1)

Application.Run "RelatorioACessos" 'chama rotina que cria o relatorio de acessos

Unload Login
PAILOG.Show

Exit Sub

End If
Next
MsgBox "Usuário ou Senha incorretos.Tente novamente !!!"
Chave = ""
Senha = ""
Chave.SetFocus
End Sub
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#15 Por Basole
20/07/2015 - 20:59
Segue rotina q registra todas alteraçoes nas celulas das planilhas (abas),
*cole o cod. abaixo, no editor das abas q deseja monitorar

Dim PreviousValue
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Acao As String
If Target.Value <> PreviousValue Then
Acao = _
Sheets("Usuários e Senhas&quot.[XFD1].Value & " alterou a célula " & Target.Address _
& " de " & PreviousValue & " para " & Target.Value
Application.Run "RelatorioACessos", Acao
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
PreviousValue = Target.Value
End Sub



* Em seguida, altere este trecho do codigo do botao [Entrar] do form. login,

Sheets("Usuários e Senhas&quot.[XFD1].Value = UsuarioAtual
Dim Acao As String
Acao = "Logou no Sistema"
Application.Run "RelatorioACessos", Acao 'chama rotina que cria relatorio


* Segue alteracao na rotina q gera relatorios
Sub RelatorioACessos(Acao As String)
Dim strFile_Path As String
strFile_Path = ThisWorkbook.Path & "\RelatorioUser.txt" 'AQUI: altere o diretorio (ex: "C:\Temp\RelatorioUser.txt&quot onde seja savar
Open strFile_Path For Append As #1
Print #1, Format(Now, "dd/mm/yyyy HH:MM:SS&quot & "=> " & UsuarioAtual & ": " & Acao
Close #1
End Sub
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal