4

Excel 2010 アプリケーション レベルのアドインを開発しています。Workbook インターフェイスに接続された一部の Application イベント、特に NewWorkbook イベントのハンドラーを作成する必要があります。

したがって、ThisAddIn_Startup ハンドラーに次のようなコードを追加しました。

Microsoft.Office.Interop.Excel.AppEvents_Event app = Globals.ThisAddIn.Application;
app.NewWorkbook += MyApp_NewWorkbook;

実行中の Excel インスタンス内で新しいワークブックが作成されると、正常に機能します。しかし、新しい Excel インスタンス (標準的なケースでは、新しいワークブックの作成を意味します) を実行すると、このイベントはハンドラーによってキャッチされません。新しい Excel インスタンスを実行すると、ThisAddIn_Startup イベントの前に NewWorkbook イベントが発生すると思います。

WorkbookOpen イベント アプリケーションの場合、アプリケーションは期待どおりに動作します。実行中の Excel インスタンス内で既存の Workbook を開いたとき、およびファイルをダブルクリックしたときに、イベントがキャッチされます。これらのイベントの処理方法が異なるのはなぜでしょうか?

この場合、どうすればよいですか?Excel が既に実行されているかどうかに関係なく、新しいブックが作成されたか、既存のブックが開かれたかを認識する必要があります。

4

2 に答える 2

1

WorkbookOpen イベントで、

string.IsNullOrEmpty(application.ActiveWorkbook.Path)

つまり、ワークブックは保存されません。Excel を開いたときに作成されるすべての新しいブックは、上記の行に当てはまります。

于 2013-08-06T15:54:16.563 に答える