授予使用某些用户Windows凭据的书籍访问权限

时间:2020-02-12 19:49:20

标签: excel vba

是否可以某种方式访问​​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 个答案:

答案 0 :(得分:1)

由于多种原因(出于安全原因,多数情况下缺乏自动执行),使用直接vba不可能限制文件查看(即使在工作表级别)。正如许多用户所说的,您应该在服务器级别使用文件权限。此外,在工作表上使用密码可能很有意义,不过请注意,这很容易被破解。

也就是说,您实际上可以从Windows中获取当前用户。这是通过从vba中调用Windows API来完成的。 https://renenyffenegger.ch/notes/development/languages/VBA/Win-API/examples/GetUserName 专门介绍您要尝试做的事情