2011-01-20 13 views
1

私はVS2008を使用しています。私のアプリケーションでは、MMCスナップインからExcel 2003ワークシート(Office 2007)を実行して、ユーザーが特定のパラメータを変更できるようにします。複数回閉じるとプロンプトが表示される

コードはBeforeClosingイベント、Window Deactivate、およびWindowActivateにサブスクライブされています。ユーザーがExcelアプリケーションを閉じることを選択した後にのみスムーズに実行され、イエス/ノー/キャンセルファイルを保存するように求められ、シートは決して/常に保存されません。問題は、実際には気をつけて閉じるためにWorkbook.Close()を使用していることです。最初のパラメータは真であればブールですが、毎回、falseには決して保存されず、Type.missingにはもう一度閉じるように促されます。したがって、ユーザーには一度だけプロンプトが表示され(この機能にはキャンセル機能しかありません)、Workbook.Close()によって再度プロンプトが表示されて保存されます(この機能にははい/いいえ機能はありますがキャンセル機能はありません)。キャンセル)。

いいえ私はBeforeSaveイベントを購読しようとしましたが、beforeCloseに入れようとしましたが、起動しません。また、強制保存は解決策ではなく、ワークブックを閉じるのをスキップし、ワークブックの終了を避けるためにExcelを終了させることも解決策ではありません。

私はまた、ブックに関連付けられたcomオブジェクトをリリースするだけで、workbook.closeを回避しようとしましたが、無駄にしませんでした。

ファイルセーブをクリックすると、スプレッドシートを保存するとオフィス2003で機能が使用できなくなることがあるというダイアログボックスが表示されます(この特別なダイアログボックスで問題が発生する可能性があります)。

1つの潜在的な解決策(私が最後の手段として持っているもの)は、閉じたときに保存プロンプトを押さえ、コード(私が制御できるダイアログボックス)から私自身のダイアログボックスを起動し、 (私はこれを避けるために、20以上の言語で翻訳しなければならず、多くの時間がかかります...)

私は非常に感謝しているアイデアがあれば、解決策を失います。

答えて

1

は解決:

は、私の同僚は、最終的にそれを割れた...どうやら直接使う1秒をスリープ状態にスレッドを委任するの初歩的なアプローチをして、Excelを閉じ、Excelのアプリを殺すいくつかの問題がありました、 (ユーザーが要求した場合)保存して正常に終了することができました。

+0

答えを正しいものとしてマークしてください(はい、あなた自身でさえ)。これは、質問が解決されたことをStackOverflowに示します。 – GvS

+1

私は知っている、私はまだそれをマークするために5時間待たなければならない:) – rotSin

0

Interactive propertyをfalseに設定することもできます。これにより、XLにダイアログが表示されなくなります。

+0

それはあまりにも動作する可能性があります。問題は、ユーザーに全機能を持たせたいということです。はい、終了時に保存プロンプトを表示せずにworkbook.closeでtype.missingを使用することもできますが、そのダイアログのキャンセルを押してもExcelが終了するという問題があります。 – rotSin

関連する問題