Sub AskUserEnabledMacros()
Dim wksInfoSheet As Worksheet
Dim objSheet As Object
On Error Resume Next
'引用<启用宏>工作表并判断其是否存在
Set wksInfoSheet = ThisWorkbook.Worksheets("启用宏")
If wksInfoSheet Is Nothing Then
MsgBox "不能够找到<启用宏>工作表", vbCritical
Exit Sub
End If
'关闭屏幕更新
Application.ScreenUpdating = False
'遍历工作簿中的所有工作表并设置所有工作表可见
For Each objSheet In ThisWorkbook.Sheets
objSheet.Visible = xlSheetVisible
Next objSheet
'隐藏<启用宏>工作表
wksInfoSheet.Visible = xlSheetVeryHidden
'保存工作簿
ThisWorkbook.Saved = True
'恢复屏幕更新
Application.ScreenUpdating = True
End Sub
'隐藏除<启用宏>工作表之外的所有工作表
Sub RunOnClose()
Dim wksInfoSheet As Worksheet
Dim objSheet As Object
On Error Resume Next
'引用<启用宏>工作表并判断其是否存在
Set wksInfoSheet = ThisWorkbook.Worksheets("启用宏")
If wksInfoSheet Is Nothing Then
MsgBox "不能够找到<启用宏>工作表", vbCritical
Exit Sub
End If
'关闭屏幕更新
Application.ScreenUpdating = False
'显示<启用宏>工作表
wksInfoSheet.Visible = xlSheetVisible
'隐藏其他工作表
For Each objSheet In ThisWorkbook.Sheets
If Not objSheet Is wksInfoSheet Then
objSheet.Visible = xlSheetVeryHidden
End If
Next objSheet
'保存工作簿
ThisWorkbook.Save
End Sub
Sub auto_open()
'当工作簿打开时运行AskUserEnabledMacros过程
AskUserEnabledMacros
End Sub
Sub auto_close()
'隐藏除<启用宏>工作表之外的所有工作表
RunOnClose
End Sub