如何让Excel要求用户允许macros其他不能打开工作簿?

我在我的Excel文件中有一个macros,意在确定用户是否可以打开它。 但是,根据用户机器的设置,Excel默认情况下会禁用该macros。 这最终打开并显示xls文件中的内容。

如何确保用户必须接受运行macros或Excel将closures工作簿?

更新的代码,因为它不是做什么的意思是…

这几乎是唯一可以用macros来做到这一点的方法(感谢@OlleSjögren的洞察力:p)

Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim Current As Worksheet Worksheets.Add(Before:=Worksheets(1)).Name = "Protection" Worksheets("Protection").Cells(1, 1) = "Please activate macros to view this workbook." For Each Current In Worksheets If Current.Name <> "Protection" Then Current.Visible = xlSheetVeryHidden End If Next Current End Sub Private Sub Workbook_Open() Dim Current As Worksheet For Each Current In Worksheets Current.Visible = xlSheetVisible Next Current Application.DisplayAlerts = False Worksheets("Protection").Delete Application.DisplayAlerts = True End Sub 

属性xlSheetVeryHidden意味着它不能通过UI显示(VBA代码只能改变它)。

我想你不能这样做。 但是我们可以做一个解决方法。

  1. 首先,你需要隐藏所有的工作表,并阻止用户取消隐藏。 链接 。 在链接之后,你会看到你可以制作一张非常隐蔽的表格 。 如链接所示,您还需要为vba代码添encryption码。

  2. 然后你可以创build一个添加一个带有密码的InputBox的macros

     Sub CheckPassword() Dim password As String password = InputBox("Enter the password") 'You can use a Form with Textbox [PasswordChar] to put **** If password = "myPass" Then Sheets(3).Visible = xlSheetVisible Sheets(3).Select End If End Sub 
  3. 最后你可以在close事件中附上一个sub。

     Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets(3).Visible = xlSheetVeryHidden End Sub