У меня есть файл excel, многоязычный и используемый различными сотрудниками.Поэтому я создал код, который запускается при открытии книги (Initialize Sub).Что он делает, так это в основном выясняет текущие настройки и язык текущих пользователей и соответствующим образом готовит книгу Excel.Он изменяет значения различных ячеек на нужный язык, устанавливает заголовки кнопок, заполняет поля со списком соответствующими строками и т. Д. ...
После всех этих начальных настроек книга готова к использованию.Но очевидно, что все эти изменения делают файл "не сохраненным".Поэтому, когда кто-то открывает файл и сразу пытается его закрыть, появляется подсказка, что изменения были внесены, и если они хотят их сохранить.
Я хотел этого избежать, поэтому после того, как я выполню всю инициализациюЯ попытался использовать ThisWorkbook.Saved = True, чтобы предотвратить приглашение сохранения (см. Пример кода).Но по какой-то причине это не работает.
Вот мой код:
Private Sub Workbook_Open()
Call Initialize
ThisWorkbook.Saved = True
End Sub
Единственное объяснение состоит в том, что после завершения события Workbook_Open должно произойти что-то, что изменит рабочую книгу ... но японятия не имею, что это будет.Я подозревал, что некоторые формулы могут пересчитываться из-за изменений, поэтому я также попытался вручную пересчитать каждый лист как часть Initialize Sub, но это не помогло.
Я, очевидно, попытался просто сохранить файл:
Private Sub Workbook_Open()
Call Initialize
ThisWorkbook.Save
ThisWorkbook.Saved = True
End Sub
Когда я это сделал, это вроде работало - приглашение сохранить не отображалось.Но поскольку во время инициализации было сделано много изменений, сохранение занимает довольно много времени и делает файл Excel очень «запаздывающим» при открытии.Также по какой-то причине он останавливается при закрытии ... Я имею в виду, когда я вручную сохраняю файл, а затем закрываю его, он немедленно закрывается.Но когда я помещаю ThisWorkbook.Save в событие Workbook_Open и открываю файл (он задерживается при открытии), а затем пытаюсь сразу же закрыть файл, я не получаю подсказку (что хорошо), но для этого требуется около 1015 секунд, чтобы закрыться по какой-то причине.
Наконец, я очень озадачен поведением в этих двух сценариях ... потому что, когда я просто использую:
ThisWorkbook.Saved = True
, я получаю приглашение,это означает, что должно было произойти что-то, что превратило его в «ложь».
Но когда я использую оба:
ThisWorkbook.Save
ThisWorkbook.Saved = True
, я не получаю подсказку, что означает, что «вещь», котораяПревратил его в ложь в первом случае не происходит ...