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