仅为某些用户提供工作簿写访问权限

时间:2015-10-06 07:20:55

标签: vba excel-vba excel

我有一个带有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

但我无法找到如何设置工作簿解锁以及设置工作表锁定的位置(以及何时)。我想在开放赛事期间将其锁定是一个坏主意。如果有人能在这里帮助我,我真的很感激。

1 个答案:

答案 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功能)