Notifications
Clear all

vba - Liberar acesso ao conteúdo apenas através do atalho.

4 Posts
3 Usuários
0 Reactions
1,283 Visualizações
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

Prezados, boa tarde!

Eu tenho uma planilha com macros, e eu criei um atalho para essa planilha.

Questão:

Seria possível evitar o acesso a planilha deixando apenas o atalho liberado?

exemplo:

se o usuário tentar abrir o arquivo (não o atalho, mas sim a planilha diretamente) o excel não vai exibir o conteúdo.

o usuário tera acesso ao conteúdo apenas se abrir o arquivo pelo atalho criado.

eu tentei clicar em propriedades do arquivo e marcar como oculto, porém o windows pode facilmente mostrar o conteúdo oculto

ferramentas/opções de pasta/modo de exibição/mostrar arquivos, pastas e unidades ocultas.

em anexo, segue exemplo.

agradeço pela colaboração de todos.

 
Postado : 19/04/2018 11:43 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Olá!

Não seria mais fácil colocar o arquivo original em uma pasta de trabalho trancada com senha?
Dessa forma o usuário não conseguiria acessá-la.

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 19/04/2018 11:46 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

Olá,

segui os passos do link abaixo, porém quando o atalho é criado o mesmo não funciona (a pasta contendo o arquivo excel fica oculta)

https://canaltech.com.br/seguranca/Como ... com-senha/

tem alguma outra forma ?

obrigado.

 
Postado : 19/04/2018 12:36 pm
(@boobymcgee)
Posts: 84
Trusted Member
 

Eu uso esse método, supondo que o arquivo esteja em um servidor, veja se isto ajuda:

'

Public Sub Workbook_Open()
+++++++++++++++
CaminhoArquivo = "\Seu_Caminho_de_RedeNome_do_seu_arquivo.xlsm"
'+++++++++++++++
vai:
'========================
'Valida o local do arquivo
If (ThisWorkbook.FullName) <> CaminhoArquivo Then 

'se for eu não importa como chegou
If user = "boobymcgee" Then

    CaminhoArquivo = vbNullString
    CaminhoArquivo = ThisWorkbook.FullName

GoTo vai

'Se for outro usuário, nega o acesso e passa a mensagem  
Else

    MsgBox("Esta planilha não poderá ser copiada ou movida de seu local original," + vbCrLf + "esta cópia será excluída." + vbCrLf + _
    "Se necessitar de uma cópia ou alterar o local de origem contate o administrador"), vbCritical, "ATENÇÃO", vbCritical, "ATENÇÃO - Cronogramas"
    autodestroy = 1

'chama a rotina para fechar a planilha
    Call BotaoFecheMe  'ThisWorkbook.Close
End If
End If
'========================
End Sub

Mas se o acesso ao arquivo for livre, dai usa o "username" para pegar o logon do windows e fechar o arquivo se o cara não estiver liberado:


Public Sub Workbook_Open()
Public user As String 

user = Environ("username")

If user <>"boobymcgee" or user <> "fulano" Then

 MsgBox("Esta planilha não poderá ser acessada")
Call BotaoFecheMe  'ThisWorkbook.Close

Else

MsgBox "Bem Vindo" 
   
End If
End sub

 
Postado : 19/04/2018 2:38 pm