【问题标题】:Hide/Unhide sheets using username使用用户名隐藏/取消隐藏工作表
【发布时间】:2015-11-25 15:23:36
【问题描述】:

我只想问是否可以创建一个 VBA 来检测使用 Environ$("username") 打开工作簿的人的身份,并使用它我可以隐藏一些工作表并取消隐藏其他工作表人可以看到吗?然后,如果另一个人打开同一个工作簿,它将隐藏/取消隐藏那个人的工作表。

【问题讨论】:

  • 是的,您可以,您可能必须使用VBA.Environ("UserName") 才能使其在某些计算机上运行! ;)
  • 这不安全。如果是为了方便(即隐藏不相关的信息),您甚至应该考虑它。
  • 是的,这并不是为了安全。这只是为了确保用户只会看到更少的工作表。
  • 顺便说一句,当我在这里使用 environ("username") 时,它只会显示由字母数字组成的员工 ID,而不是真正的员工姓名。那你能给我举个例子吗?假设一名员工的 ID 是 ABC123,我只希望他看到名为 sheet1 和 sheet2 的工作表。然后对于员工 DEF456,它只会显示 sheet3 和 sheet4

标签: vba excel


【解决方案1】:

您想要的示例(仅用于教育目的):

Private Sub Workbook_Open()

Select Case Environ("username")
    Case "bloggsj"
        Sheets(1).Visible = False
        Sheets(2).Visible = True
    Case "doej", "murphyp", "manm"
        Sheets(2).Visible = True
        Sheets(1).Visible = False
    Case Else
        '// Unknown, close workbook
        ThisWorkbook.Close False
End Select

End Sub

重要提示:正如 cmets 中已经提到的,这不是保护数据的安全方式,例如两个简单的原因:

  • 环境变量“用户名”可以很容易地更改,这会诱使代码认为此人是不同的用户。
  • Workbook_Open 事件可以通过在打开文件时按住 shift 按钮轻松绕过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多