Это сделает то, что вам нужно, но есть более эффективные способы управления правами доступа в файлах Excel.
Поместите этот код в объект ThisWorkbook
Private Sub Workbook_Open()
Dim Users As Object
Set Users = GetUsers()
If Not Users.Exists(Application.UserName) Then
MsgBox "Sorry, you lack access to this workbook.", vbCritical, "No Access"
ThisWorkbook.Close
End If
End Sub
Поместите этот код в модуль. Предполагается, что у вас есть лист с именем Users, а имена пользователей сохраняются, начиная с ячейки A2 и заканчивая вниз.
Public Function GetUsers() As Object
Dim Users As Range
Dim User As Range
With ThisWorkbook.Sheets("Users") 'Replace Users with name, or use CodeName
Set Users = .Range("A2:A" & .Cells(.Rows.Count, "A").End(xlUp).Row) 'Assuming header row on A1
End With
Set GetUsers = CreateObject("Scripting.Dictionary")
For Each User In Users
If Not GetUsers.Exists(User.Value2) Then GetUsers.Add User.Value2, User.Value2
Next
End Function