Рабочая книга запрашивает изменения при закрытии, если не было внесено никаких изменений - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть файл Excel, который запускает некоторые компоненты ActiveX.Недостатком является то, что он запрашивает сохранение каждый раз, когда я закрываю файл, даже если я не вносил никаких изменений.Я попытался добавить следующий код в объект ThisWorkbook:

Private Sub Workbook_Open()
    ActiveWorkbook.Saved = True
End Sub

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

Любая помощь?

1 Ответ

0 голосов
/ 22 ноября 2018

Ах, да, мне пришлось самому заняться этим вопросом.Поскольку эти компоненты запускаются ПОСЛЕ открытия книги (и после события Workbook_Open()), вам необходимо запустить код при закрытии книги .

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    ThisWorkbook.Saved = True

End Sub

Должно бытьпомещается в модуле кода ThisWorkbook.


Чтобы случайно не не сохранить книгу, когда вы фактически обновляете ее, вы можете попробовать установить свой собственный флаг глобальной переменной - который должен быть расположен встандартный модуль и имеет область действия Public.После этого вы можете использовать событие Workbook_SheetChange для установки этого флага, когда вы фактически изменяете любое содержимое в рабочей книге:

Стандартный модуль: Добавить флаг публикации

Public bPromptSave as Boolean

Модуль рабочей книги: обработчики событий

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    bPromptSave = True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    if not bPromptSave then ThisWorkbook.Saved = True

End Sub
...