gpt4 book ai didi

VBA 对特定用户隐藏工作表

转载 作者:行者123 更新时间:2023-12-02 21:30:57 25 4
gpt4 key购买 nike

寻找有关 VBA 用户限制的帮助。到目前为止,我已将代码粘贴在下面。它运行完美,但我想在此基础上继续发展。

我拥有它,以便列出的特定用户可以访问该文件,而尝试访问该文件的其他任何人都会收到一个 msgbox 提示他们未获得授权,然后书籍就会关闭。

但是,我希望一些用户可以看到一些工作表(他们不应该看到的工作表将被 xlveryhidden),然后其他用户可以看到列出的其他工作表...

即:姓名1可见表13,name2可以看到sheet14和sheet3名称3可以看到sheet22、sheet23和sheet4就安全性而言,这并不是很重要,它们都来自同一个团队,但只是为了用户友好且整洁的文档。

Private Sub Workbook_Open()
Dim Users As Variant
Dim UName As String
Dim UFind As Variant
Users = Array("Name1", "Name2", "Name3", "Name4", "Name5")

UName = Environ("UserName")
On Error Resume Next
UFind = WorksheetFunction.Match(UName, Users, 0)
If Err <> 0 Then
MsgBox "You are not authorised to use this Workbook"
ThisWorkbook.Close SaveChanges:=False
End If
End Sub

最佳答案

想出了一个答案,它非常简单,并且无法承受新用户的添加,但同时还可以......

Private Sub Workbook_Open()
Dim Users As Variant
Dim UName As String
Dim UFind As Variant
Users = Array("Name1", "Name2", "Name3")

UName = Environ("UserName")
On Error Resume Next
UFind = WorksheetFunction.Match(UName, Users, 0)
If UName = "Name2" Then
Worksheets("Sheet23").Visible = True
Worksheets("SHEET17").Visible = True

ElseIf UName = "Name1" Then
Worksheets("Sheet23").Visible = True
Worksheets("SHEET17").Visible = True
Worksheets("Sheet4").Visible = True


ElseIf UName = "Name3" Then
Worksheets("Sheet23").Visible = True
Worksheets("SHEET17").Visible = True

ElseIf Err <> 0 Then
MsgBox "You are not authorised to use this Workbook"
ThisWorkbook.Close SaveChanges:=False
End If
End Sub

为了在关闭文件时再次重新隐藏它们:

SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean)

Worksheets("Sheet23").Visible = False
Worksheets("SHEET17").Visible = False
Worksheets("Sheet4").Visible = False
Worksheets("Sheet1").Visible = False

‘If you don’t save it’s not effective
Me.Save End Sub

关于VBA 对特定用户隐藏工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37157323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com