2016-06-20 31 views
1

Ich habe ein Excel-VSTO-Add-In auf Anwendungsebene mit einem XML-Ribbon. Beim Öffnen von zwei oder mehr Arbeitsmappen in derselben Excel-Instanz wird die gleiche Multifunktionsleisteninstanz derzeit in allen Arbeitsmappen gemeinsam verwendet.Wie separate Ribbon-Instanzen für jede Arbeitsmappe in Excel VSTO-Add-In auf Anwendungsebene haben?

Dies ist ein Problem, da in der Ribbon-Klasse bestimmte Variablen vorhanden sind, deren Werte für jede Arbeitsmappe unterschiedlich sein sollten. Da nur eine Instanz dieser Ribbon-Klasse erstellt wird, wird dieser Wert auch für die anderen geöffneten Arbeitsmappen geändert, wenn eine bestimmte Operation in einem Arbeitsmappenblatt die Änderung eines Variablenwerts verursacht. Das sollte jedoch nicht passieren.

Gibt es eine Möglichkeit, dass bei jedem Öffnen einer neuen Arbeitsmappe eine neue Ribbon-Instanz erstellt werden kann?

Antwort

0

Nein, es ist nicht möglich, dokumenten- oder fensterspezifische Instanzen der Multifunktionsleiste in einer einzigen Instanz der Excel-Anwendung zu erstellen.

Ihr Code muss Ereignisse wie Workbook.Open und WorkbookActivate verfolgen, um zu bestimmen, wann eine andere Arbeitsmappe die ist, mit der der Benutzer arbeitet. Verwenden Sie die Methoden Invalidate und InvalidateControl der Ribbon-Benutzeroberfläche, um Callbacks auszulösen, um die Statuseinstellungen für die Multifunktionsleiste so zu ändern, dass sie den Einstellungen für die Arbeitsmappe entsprechen.