Я использую VS2008. В моем приложении из оснастки MMC я запускаю рабочую таблицу Excel 2003 (в Office 2007), чтобы пользователь мог изменять определенные параметры.
Код подписан на событие BeforeClosing, Window Deactivate и WindowActivate. Все идет гладко, только после того, как пользователь решает закрыть приложение Excel, ему предлагается сохранить файл да / нет / отменить, и лист никогда / всегда не сохраняется. Проблема в том, что я использую Workbook.Close (), чтобы фактически закрыть эту чертову вещь. Первым параметром является bool, если он установлен в true, он будет сохранять каждый раз, в false - никогда, а при Type.missing снова будет запрашивать закрытие. Таким образом, пользователю предлагается один раз (у этого есть только функция отмены), а затем Workbook.Close () снова предлагает ему сохранить (у этого есть функции да / нет, но нет функции отмены - он закроется, даже если вы нажмете отмена).
Нет, я пытался подписаться на событие BeforeSave и пытался поместить это в beforeClose, но оно не срабатывает; Также принудительное сохранение не является решением, и пропуск закрытия книги и уничтожение Excel (чтобы избежать закрытия книги) также не является решением.
Я также пытался избежать workbook.close, просто выпуская com-объект, связанный с книгой, но безрезультатно.
Стоит отметить, что если вы нажмете кнопку сохранения файла, появится диалоговое окно, информирующее вас о том, что при сохранении электронной таблицы некоторые функции могут быть недоступны в Office 2003 (может ли это дополнительное диалоговое окно стать проблемой?)
Одним из возможных решений (которое я бы выбрал в качестве крайней меры) было бы подавление приглашения на сохранение при закрытии и запуск моего собственного диалогового окна из кода (диалоговое окно, которым я могу управлять), чтение результата и выполнение действий. соответственно (я хочу избежать этого, потому что он должен быть переведен на более чем 20 языков и занимает много времени ...)
Я в недоумении для решений, если у вас есть идеи, я был бы очень признателен.