Ich habe erfolgreich die Microsoft Probe „Exemplarische Vorgehensweise: Synchronisieren einen benutzerdefinierten Aufgabenbereich mit einem Band-Knopf“ hier: http://msdn.microsoft.com/en-us/library/bb608590.aspxBenutzerdefinierte Aufgabenbereich mit mehreren geöffneten Arbeitsmappe
Zunächst ich in ein Problem mit dem Aufgabenbereich lief nicht angezeigt, was das Ergebnis eines Konflikts zwischen meinem Add-In und dem "Analysis Toolpack" von Microsoft war. Nachdem ich das Analyse-Toolpack deaktiviert hatte, wurde der benutzerdefinierte Aufgabenbereich wie erwartet angezeigt und ausgeblendet.
Ich schrieb dann einen Code, um Zellen in einem ausgewählten Bereich zu ändern, wenn der Benutzer eine Taste drückt. Das schien gut zu funktionieren - bis ich eine weitere Arbeitsmappe öffnete! Jedes Arbeitsmappenfenster verfügt über eine eigene Add-In-Multifunktionsleiste. Wenn ich jedoch auf die Umschaltfläche zum Öffnen/Schließen des benutzerdefinierten Aufgabenbereichs klickte, wurde nur der benutzerdefinierte Aufgabenbereich für das erste erstellte Fenster geöffnet/geschlossen. Dies ist unabhängig davon, welches Fenster, das ich in dem Toggle-Button klicken.
Der Code instanziiert das CustomTaskPane Objekt in ThisAddIn_Startup (wie im Beispielcode). Das einzige, was ich hinzugefügt habe, ist wirklich die Button-Aktion in dem Usercontrol:
using xl = Microsoft.Office.Interop.Excel;
namespace SynchronizeTaskPaneAndRibbon
{
public partial class TaskPaneControl : UserControl
{
public TaskPaneControl()
{
InitializeComponent();
}
private void actionButton1_Click(object sender, EventArgs e)
{
xl.Range selection_rng = Globals.ThisAddIn.Application.Selection;
foreach (xl.Range cell in selection_rng.Cells)
{
if (cell.Value is string)
{
string v = cell.Value;
cell.Value = v + "*";
}
}
}
}
}
Der Rest des Codes ist nur, wie es in dem Beispiel.
Gibt es eine Möglichkeit, das Beispiel so zu ändern, dass es für das Öffnen mehrerer Arbeitsmappen funktioniert? Ich möchte, dass das gleiche Add-In in jedem Arbeitsmappenfenster mit derselben Multifunktionsleiste und demselben benutzerdefinierten Bereich angezeigt wird. Und natürlich, um Band Aktionen (wie ein Tastendruck) zu dem benutzerdefinierten Aufgabenbereich, der im selben Fenster angezeigt wird.