Страницы: 1
RSS
Ограничить доступ к Excel файлу
 
Добрый вечер.

Необходимо макрос который бы по логину window определял пользователей и разрешал или запрещал доступ
посредством сообщения msgbox
то есть если пользователь прописан в excel как разрешенный то он спокойно открывает файл, если нет то при открытии он получает сообщение msgbox о запрете в доступе
 
Цитата
Homavi написал:
разрешал или запрещал доступ посредством сообщения msgbox
Типа  Не влезай убъет! или "Добро пожаловать, дорогой друг Карлсон! Ну, и ты заходи"  Это не защита конечно, а предупреждени.
посмотрите тут коррекция минимальна.
По вопросам из тем форума, личку не читаю.
 
БМВ, вроде бы работает )))

спасибо ))
а остался вопрос, как можно запихать туда msgbox чтобы люди понимали что доступ ограничен а не просто так ексель закрылся ? ))

и так же проблема с сохранение файла
у меня при закрытии файла идет автоматическое сохранение , но с данным макросом идет ошибка (((
Изменено: Homavi - 19.03.2018 23:10:56
 
замените ThisWorkbook.Close 0
на например msgbox("Halt! Hande hoch!")
По вопросам из тем форума, личку не читаю.
 
БМВ, тогда он не закрывает файл а показывает сообщение и все (((
 
Тогда вызывайте MsgBox перед указанной строкой.
 

Юрий М, БМВ,

Код
 Dim su As String, v
 
    su = CreateObject("wscript.network").UserName
    'èùåì òåêóùåãî ïîëüçîâàòåëÿ â ñïèñêå ñòîëáöà À ëèñòà "users"
    v = Application.Match(su, ThisWorkbook.Sheets("a").Range("I:I"), 0)
    If IsError(v) Then 'v ñîäåðæèò îøèáêó, çíà÷èò òàêîãî ïîëüçîâàòåëÿ íåò â ñïèñêå
        MsgBox ("test")
        
        Application.DisplayAlerts = False
      '  ThisWorkbook.ChangeFileAccess xlReadOnly
       ' Kill ThisWorkbook.FullName
        Application.DisplayAlerts = True
        ActiveWorkbook.Save
        ThisWorkbook.Close 0
    End If

я так изменил, но он открывает при этом страницу, но когда нажимаешь на сообщение ОК он закрывает книгу

Можно ли как то сделать так чтобы он не показывал страницу когда логин не совпадает




 
Цитата
Homavi написал:
или запрещал доступ посредством сообщения msgbox
Что не так? :-)
Попробуйте так.
Код
Private Sub Workbook_Open()
    Dim su As String, v
    su = CreateObject("wscript.network").UserName
    'ищем текущего пользователя в списке столбца А листа "users"
    v = Application.Match(su, ThisWorkbook.Sheets("users").Range("A:A"), 0)
    If IsError(v) Then 'v содержит ошибку, значит такого пользователя нет в списке
        MsgBox ("Halt! Hande hoch!")
        ThisWorkbook.Close 0
    End If
End Sub
По вопросам из тем форума, личку не читаю.
 
БМВ, ну впринципе так и получилось )))

спасибо ))
 
А зачем сохранять? Или вы лог еще собрались писать? Если нет, то смысла нет. А если есть и были изменения, то
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-close-method-excel
ThisWorkbook.Close 1,
Изменено: БМВ - 19.03.2018 23:32:24
По вопросам из тем форума, личку не читаю.
 
БМВ, у меня он сохраняет автоматом если пользователь правильный зашел, а вот если не правильный то он все равно сохраняется
Страницы: 1
Наверх