2

xml リボンを備えたアプリケーション レベルの Excel VSTO アドインがあります。現在、同じ Excel インスタンスで 2 つ以上のブックを開くと、同じリボン インスタンスがすべてのブックで共有されます。

リボン クラスにはワークブックごとに値が異なる特定の変数があるため、これは問題です。そのリボン クラスのインスタンスは 1 つしか作成されないため、ワークブック シートに対する特定の操作によって変数値が変更されると、その値は開いている他のワークブックでも変更されます。しかし、それは起こるべきではありません。

新しいワークブックを開くたびに新しいリボン インスタンスを作成する方法はありますか?

4

1 に答える 1

1

いいえ、Excel アプリケーションの 1 つのインスタンス内で、リボンのドキュメントまたはウィンドウ固有のインスタンスを作成することはできません。

コードでは、Workbook.Openやなどのイベントを追跡WorkbookActivateして、ユーザーが作業しているブックが別のブックであるかどうかを判断する必要があります。Invalidateリボン UI のおよびメソッドを使用しInvalidateControlてコールバックをトリガーし、ワークブックの設定を反映するために、必要に応じてリボン コントロールの状態を変更します。

于 2016-06-21T17:12:39.577 に答える