如何创建一个 Excel 电子表格,通过仅对正确用户启用的按钮提供指向工作簿的链接?

Posted

技术标签:

【中文标题】如何创建一个 Excel 电子表格,通过仅对正确用户启用的按钮提供指向工作簿的链接?【英文标题】:How can I create an Excel spreadsheet which provides links to workbooks through buttons which are only enabled to the right user? 【发布时间】:2014-01-22 20:58:16 【问题描述】:

如何创建一个 Excel 电子表格,使用仅对正确用户启用的按钮提供指向工作簿的链接?

我想创建一个索引页/电子表格/工作簿供多个用户使用,以便访问大量工作簿。我想灰显(禁用)或删除不允许用户访问的工作簿的按钮。

我不知道该怎么做,我阅读了 IRM。虽然它没有显示我如何使某些用户无法访问的按钮变灰(禁用)。

非常感谢大家的意见。

提前谢谢大家。

【问题讨论】:

什么是用来管理权限的?权限是在文件系统上设置的,还是在其他位置?有几种方法可以使用 VBA 来获取登录用户的 id - 例如:***.com/questions/677112/… @TimWilliams 我使用活动目录来更新管理权限的数据库。 【参考方案1】:

首先,您需要使用密码保护您的工作簿并为您的用户/权限创建一个数据库,将数据库表设置为 VeryHidden xlSheetVeryHidden

数据库示例:

+----------+----------+----------+----------+
|  Names   |           Allow                |
+          +----------+----------+----------+
|          | Button 1 | Button 2 | Button 3 |
+----------+----------+----------+----------+
| MrJones  | 1        | 0        | 0        |
| Makah    | 0        | 1        | 0        |
| Seesharp | 1        | 1        | 1        |
+----------+----------+----------+----------+

现在您可以创建一个 checkPermission 子程序来检查是否可以执行宏。

Function CheckPermission(byVal colIndex as Integer) As Boolean
    Dim userName As String, allow As Integer

    userName = Environ("USERNAME")
    CheckPermission= WorksheetFunction.VLookup(userName, Sheets("DB").[A:D], colIndex, False)
End Function

最后你可以在所有宏中使用这段代码了。

Sub Button1()
  If Not CheckPermission(2) Then
    Exit Sub
  End If

  'Your code here!

End Sub

【讨论】:

以上是关于如何创建一个 Excel 电子表格,通过仅对正确用户启用的按钮提供指向工作簿的链接?的主要内容,如果未能解决你的问题,请参考以下文章

怎样做电子表格

通过EXCEL VBA 连接SAP系统后,导出打开的电子表格文件另存(不是系统自带的导出EXCEL表)

Excel中的VBA创建带有表格和签名的电子邮件

如何利用Excel电子表格实现纯表格循环扩展报表

任务计划程序无法正确执行批处理文件

Excel筛选之后如何下拉递增