Mam powodzeniem wdrożył Microsoft próbka „Instrukcja: Synchronizacja niestandardowej Okienko zadań z przyciskiem wstążka” znaleźć tutaj: http://msdn.microsoft.com/en-us/library/bb608590.aspxniestandardowe okienko zadań z wielu otwartych skoroszytach
Początkowo wpadłem na problem z okienka zadań nie wyświetla się, co okazało się wynikiem konfliktu między moim dodatkiem a "Narzędziami analitycznymi Microsoftu". Po wyłączeniu narzędzia Analysis Toolpack panel zadań niestandardowych zaczął się wyświetlać i ukrywać zgodnie z oczekiwaniami.
Następnie napisałem kod, aby zmienić komórki w wybranym zakresie, gdy użytkownik naciśnie przycisk. Wydawało się, że działa dobrze - dopóki nie otworzyłem innego skoroszytu! Każde okno skoroszytu ma własną wstążkę dodawania, ale kiedy kliknąłem przycisk przełącznika, aby otworzyć/zamknąć niestandardowe okienko zadań, otworzył/zamknął niestandardowy panel zadań dla pierwszego utworzonego okna. Jest to niezależnie od tego, w którym oknie kliknę przycisk przełączania.
Kod tworzy instancję obiektu CustomTaskPane w ThisAddIn_Startup (podobnie jak w kodzie przykładowym). Jedyne, co dodałem, to akcja przycisku w 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 + "*";
}
}
}
}
}
Reszta kodu jest taka, jak w przykładzie.
Czy istnieje sposób na zmianę przykładu, aby działał z otwartymi wieloma skoroszytami? Potrzebuję tego samego dodatku, który pojawi się w każdym oknie skoroszytu, z tą samą Wstążką i tym samym Okienkiem Niestandardowym. I, oczywiście, mieć wszelkie akcje wstążki (takie jak naciśnięcie przycisku) do niestandardowego panelu zadań, który pojawia się w tym samym oknie.