强制打开macros,然后在macros打开时显示用户窗体

我有一个问题,但不知道,如果它甚至可以工作。 我正在使用Excel 2013,我有一些代码来强制打开macros。 它显示一个工作表,使用户打开macros,并隐藏其他表。 一旦工作簿被重新打开,剩余的工作表将被显示,并且macros表被隐藏。 我想要做的是显示macros表,告诉用户打开macros。 一旦工作簿被重新打开,我想在打开工作簿之前显示一个用户窗体。 我用来强制用户打开macros的代码如下所示:

Option Explicit Const origsave As String = "C:\SDK Engineering\iMudCalc Software" Const origwrkbksave As String = "C:\SDK Engineering\iMudCalc Software\iMudCalc.xlsm" Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim ws As Worksheet 'don't display workbook Application.Visible = False 'Unhide the Starting Sheet Sheets("Warning").Visible = xlSheetVisible For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Warning" Then ws.Visible = xlVeryHidden End If Next ws If Len(Dir(origsave)) > 0 Then MkDir (origsave) Else ActiveWorkbook.SaveCopyAs (origwrkbksave) End If End Sub Private Sub WorkBook_Open() Dim ws As Worksheet Application.Visible = False For Each ws In ThisWorkbook.Worksheets ws.Visible = xlSheetVisible Next ws Sheets("Warning").Visible = xlVeryHidden 'this is where I need the workbook to stay invisible and display a userform if macros are enabled... frmOnLoad.Show End Sub 

任何人都可以帮助解决这个问题? 希望我解释得很好。

我相信你正在寻找这样的事情。

根据需要修改。

放在ThisWorkbook

 Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets("Warning").Visible = xlSheetVisible Dim ws For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Warning" Then ws.Visible = xlVeryHidden Next ws ThisWorkbook.Save End Sub Private Sub Workbook_Open() Dim ws For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Warning" Then ws.Visible = xlSheetVisible Next ws Sheets("Warning").Visible = xlVeryHidden End Sub 

例:

演示