XL2003: Изменение этого файлаWindowsWindows (). Видимое свойство во время Workbook_Before Закрытие события препятствует закрытию книги

Как заголовок. Это сводит меня с ума, и я не могу найти ссылки на него нигде в Интернете.

У меня есть загруженная VBA книга, которая обычно скрыта при использовании:

ThisWorkbook.Windows(1).Visible = False 

Однако, когда рабочая книга закрыта, мне нужно, чтобы она вернулась к состоянию по умолчанию, когда его окно видно, и отображается «специальный» рабочий лист, который инструктирует пользователя о включенных макросах. Это должно обеспечить руководство, если следующий пользователь откроет книгу с отключенными макросами. Когда рабочая книга открывается с включенными макросами, событие Workbook_Open заботится о том, чтобы снова скрывать это сообщение, после чего продолжается нормальная работа.

Моя проблема заключается в том, что когда я изменяю .Windows().Visible свойство из события _BeforeClose рабочей книги (которое возникает только при выходе Excel), книга просто остается на экране. Я подтвердил, что он определенно устанавливает .Windows().Visible свойство, вызывающее это поведение.

Я попытался использовать свойство ThisWorkbook.IsAddin , так как это имеет тот же эффект, что и «скрытие» рабочей книги с точки зрения пользователя, но это вызывает точно такое же поведение.

Я также попробовал просто не изменять видимость окна в любом случае, в надежде, что впоследствии открытие книги с отключенными макросами приведет к игнорированию свойства, но это не так.

Единственное, что я могу сделать, чтобы вызвать желаемое поведение, – это ThisWorkbook.Close как последняя строка самого события _BeforeClose, но это вызывает нестабильность, которая проявляется как случайная «Excel неожиданно закрылся, вы хотите восстановить / перезапустить ?» сообщение после выхода Excel.

Любая помощь / указатели с благодарностью принимается. У меня нет доступа к более поздней версии Excel.

Мой код:

 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.ScreenUpdating = False Call cleanUp Application.ScreenUpdating = True End Sub 

а также

 Private Sub cleanUp() Dim s As Worksheet shtZNM.Visible = xlSheetVisible For Each s In ThisWorkbook.Sheets If Not s Is shtZNM Then s.Visible = xlSheetHidden Next s With ThisWorkbook.Windows(1) .DisplayWorkbookTabs = False .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False .Visible = True '<==REMOVING THIS ALLOWS _BEFORECLOSE TO WORK AS EXPECTED End With On Error Resume Next Application.CommandBars("QCS").Delete Err.Clear Application.CommandBars("Worksheet Menu Bar").Controls("QCS").Delete Me.Save End Sub 

Давайте будем гением компьютера.