быстрое сохранение при закрытии несколько раз - PullRequest
1 голос
/ 20 января 2011

Я использую 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 языков и занимает много времени ...)

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

Ответы [ 2 ]

1 голос
/ 21 января 2011

РЕШИТЬ:

Мой коллега наконец-то взломал его ... По-видимому, были некоторые проблемы при прямом закрытии Excel, поэтому при рудиментарном подходе делегирование потока в спящий режим на 1 секунду с последующим уничтожением приложения Excel можно было сохранить (если было запрошено пользователем) и успешно завершено.

0 голосов
/ 21 января 2011

Вы также можете установить Интерактивное свойство в false.Это не даст XL отображать любое диалоговое окно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...