Почему Excel перестает предлагать сохранять открытые пользователем книги? - PullRequest
0 голосов
/ 02 мая 2018

РЕДАКТИРОВАТЬ: Я дурак; это был не глюк Excel, а ошибка программиста. Был Worksheet.Application.DisplayAlerts = False, о котором я забыл / пропустил в своем первоначальном поиске. После того, как я добавил необходимый Worksheet.Application.DisplayAlerts = True, перед закрытием книги все работает как надо.

У меня есть интересный сбой, который я не совсем понимаю, и я надеюсь, что кто-то может мне помочь.

У меня есть программа vb.NET, которая использует ссылки COM Excel для открытия существующей книги, изменения файла, его сохранения и закрытия. Работает как шарм. Чтобы свести к минимуму использование ресурсов, программа открывает приложение Excel в фоновом режиме, когда пользователь переходит к этой части программы, и не закрывает ее до тех пор, пока она не будет закрыта.

Если пользователь открывает файл Excel, когда моя программа активна, ОС будет использовать приложение Excel, которое моя программа автоматически открыла в фоновом режиме. Не проблема, все работает нормально. Если пользователь редактирует файл, Excel предложит сохранить его перед закрытием файла. Как только пользователь закроет свою книгу, приложение Excel вернется в фоновый режим. Если пользователь закроет мою программу, фоновое приложение Excel закроется. Если пользователь запускает функцию изменения и закрывает мою программу, Excel будет вести себя нормально, когда пользователь открывает книгу.

Однако! Если пользователь оставляет программу открытой после запуска функции изменения, Excel больше не будет запрашивать их сохранение после изменения файла. Не имеет значения, какую книгу они открывают, этот конкретный экземпляр Excel больше не будет предлагать пользователю сохранять после изменений.

Я не подавляю оповещения для этой конкретной функции. У меня также есть 5 аналогичных функций в моей программе, которые работают практически одинаково (открыть рабочую книгу, изменить ее, сохранить и закрыть). Все они открываются в Excel одинаково, прежде чем пользователь фактически нажмет кнопку запуска. Только один вызывает сбой.

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

Я использую:

Windows 10 Enterprise 1709 16299,371

Excel 2016 MSO (16.0.7329.1051) 32-разрядная

Если вам нужна любая другая версия или общая информация, пожалуйста, дайте мне знать. Заранее спасибо за вашу помощь, этот сайт - отличный ресурс!

...