Предоставить доступ к книге с определенным пользователем windows учетные данные - PullRequest
0 голосов
/ 12 февраля 2020

Возможно ли каким-либо образом иметь доступ к windows учетным данным, чтобы знать, какой пользователь хочет занять файл и, таким образом, облегчить или запретить доступ? У меня есть код, который ищет пользователя и в соответствии с этим дает или удаляет доступ, но он кажется ненадежным. Код следующий:

Private Sub Workbook_Open()
ThisWorkbook.Windows(1).Visible = False
Application.DisplayAlerts = False

If Application.UserName = "CMSTORM" Or Application.UserName = "User2" Then
    Welc = MsgBox("Bienvenido " & Application.UserName)
    ThisWorkbook.Windows(1).Visible = True
    Application.DisplayAlerts = True
    Exit Sub
Else
    Pass = "1973"
    Prompt = "Ingresa la contraseña para continuar"
    Title = "Ingreso de Contraseña"
    UserPass = InputBox(Prompt, Title)
    If UserPass <> Pass Then
        Prompt = "Contraseña Incorrecta"
        Title = "Contraseña Incorrecta"
        MsgBox Prompt, vbCritical, Title
        ThisWorkbook.Close
        Exit Sub
    Else
    Welc = MsgBox("Bienvenido " & Application.UserName)
    ThisWorkbook.Windows(1).Visible = True
    Application.DisplayAlerts = True
    End If
End If
End Sub

1 Ответ

1 голос
/ 12 февраля 2020

По разным причинам (в основном из-за отсутствия автоматического выполнения по соображениям безопасности) невозможно ограничить просмотр файлов (даже на уровне листа) с помощью прямой vba. Как утверждают многие пользователи, вы должны использовать права доступа к файлам на уровне сервера. Кроме того, может иметь смысл использовать пароль на своих листах, хотя учтите, что его можно легко взломать.

Тем не менее, вы можете фактически получить текущего пользователя от windows. Это делается путем вызова windows API из vba. https://renenyffenegger.ch/notes/development/languages/VBA/Win-API/examples/GetUserName конкретно касается того, что вы пытаетесь сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...