2014-12-19 9 views
6

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.

Odpowiedz

0

Tak, jest inny przykład na MSDN, który mówi o zarządzaniu niestandardowymi pakietami zadań w wielu dokumentach. Zauważ, że jest to z perspektywy Word/InfoPath, ale idea podstawowa będzie taka sama dla Excela.

Mówiąc ogólnie, należy dodać nową tabelę zadań do bieżącego skoroszytu, jeśli jej nie ma. Dlatego przenieś dodawanie niestandardowej logiki okienka zadań z uruchamiania aplikacji Addin do zdarzenia kliknięcia przycisku wstążki. Wykonanie tego zdarzenia typu "kliknij przycisk" daje możliwość dodania nowego panelu zadań do bieżącego dokumentu po kliknięciu wstążki.

Link: https://msdn.microsoft.com/en-us/library/bb264456(v=office.12).aspx?f=255&MSPPError=-2147217396#Anchor_2

Umieszczenie użytecznych fragmentów kodu poniżej w przypadku łącza idzie martwy w przyszłości:

//Add a custom taskpane to active Word document 
public void AddCalendarTaskPane(Word.Document doc) 
{ 
    ctpCalendar = this.CustomTaskPanes.Add(new CalendarControl(), 
     "Select a date", doc.ActiveWindow); 
    ctpCalendar.Visible = true; 
} 

Zamiast usuwania, polecam ukrywanie taskpane przełączając Visible flagę false ale YMMV . Mam nadzieję że to pomoże.

Powiązane problemy