我有一个带有rawdata的workbook
。通过button
,用户可以打开UserInterface并导出数据的不同子集。
现在我正在寻找一种方法,只允许certain users
(取决于windows用户名)对rawdata进行更改,但所有用户仍然可以点击按钮导出数据。
这是我到目前为止:
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Sub AAA()
Dim UName As String * 255
Dim L As Long: L = 255
Dim Res As Long
Res = GetUserName(UName, L)
...
End Sub
代码告诉我登录操作系统的人的Windows用户名。 我想我需要做一些事情(让我们假设HAL是一个可以访问rawdata的用户):
If UName = "HAL" then
---Unlock worksheet
End If
但我无法找到如何设置工作簿解锁以及设置工作表锁定的位置(以及何时)。我想在开放赛事期间将其锁定是一个坏主意。如果有人能在这里帮助我,我真的很感激。
答案 0 :(得分:1)
那样的东西?
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim sh As Worksheet
For Each sh In Worksheets
sh.Protect "password"
Next sh
'or if only some Whorksheets need to be locked:
'ThisWorkbook.Worksheets("RawDatas").Protect "password"
End Sub
Private Sub Workbook_SheetActivate(ByVal sh As Object)
If UserIsAllowed() Then
sh.Unprotect "password"
End If
End Sub
Public Function UserIsAllowed() As Boolean
UserIsAllowed = True
End Function
(当然,您需要更改UserIsAllowed功能)