使未启用宏的用户无法看到其他工作表

Tho*_*aib 5 vba macros microsoft-excel office365 microsoft-excel-365

我正在开发一个项目,希望所有用户都启用宏。它是一个共享工作表,因此我不能简单地将所有内容隐藏为基线并在运行 Open_Workbook 时取消隐藏工作表。我的目标是在禁用宏时仅显示我指定的“空白”表。

使用工作簿的“浏览器视图”功能,我可以使其仅在浏览器或团队上打开“空白”工作表,我想在此处执行此操作,但要检查启用的宏或默认值可以通过启用宏来打开的状态。

如果某人没有启用宏,则可以完全阻止某人使用该工作表的方法也可以。任何想法,将不胜感激。

har*_*ymc 8

您可以通过将“空白”之外的其他工作表设置为“非常隐藏”来实现此技巧。

工作表有三个“可见”属性:

  • xlSheetVisible(或 TRUE)- 工作表可见
  • xlSheetHidden(或 FALSE)- 工作表被隐藏
  • xlSheetVeryHidden - 工作表非常隐藏

用户可以使用 Excel 可视界面通过使用“取消隐藏”或“隐藏”命令在“可见”和“隐藏”状态之间进行切换。但是,只有 Visual Basic 宏可以设置或取消设置该 xlVeryHidden值,或者也可以从 VBA 编辑器手动完成。

如何使工作表非常隐藏

工作簿必须以.xlsm格式存储,然后执行以下操作:

  • Alt+F11 或单击“开发人员”选项卡中的 Visual Basic 按钮以打开 Visual Basic 编辑器。您将在左上角面板中看到“项目资源管理器”窗口。
  • F4或单击“视图”>“属性”以打开下面的“属性”窗口(如果还没有)
  • 在Project Explorer窗口中,单击选择工作表以使其非常隐藏
  • 在“属性”窗口中,将“Visible”属性设置为“2 - xlSheetVeryHidden”。

就是这样:保存并关闭工作簿。隐藏的工作表现在将完全隐藏。

显示非常隐藏的工作表

要取消隐藏非常隐藏的工作表将需要 VBA 宏,以便在禁用宏时它们将保持隐藏状态。

该宏将取消隐藏所有工作表:

Sub UnhideVeryHiddenSheets()
Dim wks As Worksheet
For Each wks In Worksheets
  If wks.Visible = xlSheetVeryHidden Then
    wks.Visible = xlSheetVisible
Next
End Sub
Run Code Online (Sandbox Code Playgroud)

该宏还可以使用如下代码行将空白工作表设置为隐藏:

Sheets("BLANK").Visible = False
Run Code Online (Sandbox Code Playgroud)

要创建在打开工作簿时自动执行此操作的宏,请参阅 Microsoft 文章
打开工作簿时自动运行宏

参考 :