是否可以某种方式访问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
答案 0 :(得分:1)
由于多种原因(出于安全原因,多数情况下缺乏自动执行),使用直接vba不可能限制文件查看(即使在工作表级别)。正如许多用户所说的,您应该在服务器级别使用文件权限。此外,在工作表上使用密码可能很有意义,不过请注意,这很容易被破解。
也就是说,您实际上可以从Windows中获取当前用户。这是通过从vba中调用Windows API来完成的。 https://renenyffenegger.ch/notes/development/languages/VBA/Win-API/examples/GetUserName 专门介绍您要尝试做的事情