Успешно внедрих примера на Microsoft „Преглед: Синхронизиране на персонализиран прозорец на задачите с бутон на лентата“, намерен тук: http://msdn.microsoft.com/en-us/library/bb608590.aspx
Първоначално се натъкнах на проблем с това, че прозорецът на задачите не се показва, което се оказа резултат от някакъв конфликт между моята добавка и „Analysis Toolpack“ на Microsoft. След като деактивирах Analysis Toolpack, персонализираният прозорец на задачите започна да се показва и скрива, както се очакваше.
След това написах някакъв код за промяна на клетки в избран диапазон, когато потребителят натисне бутон. Това изглежда работеше добре -- докато не отворих друга работна книга! Всеки прозорец на работна книга получи своя собствена лента за добавки, но когато щракнах върху бутона за превключване, за да отворя/затворя прозореца на персонализираните задачи, той отваряше/затваряше само прозореца на персонализираните задачи за първия създаден прозорец. Това е независимо в кой прозорец щракам върху бутона за превключване.
Кодът инстанцира обекта CustomTaskPane в ThisAddIn_Startup (точно както в примерния код). Единственото нещо, което наистина добавих, е действието на бутона в 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 + "*";
}
}
}
}
}
Останалата част от кода е точно както е в примера.
Има ли начин да промените примера, така че да работи за отворени множество работни книги? Това, което искам, е една и съща добавка да се показва във всеки прозорец на работна книга, с една и съща лента и със същия персонализиран панел. И, разбира се, всички действия на лентата (като натискане на бутон) да се насочват към персонализирания прозорец на задачите, който се появява в същия прозорец.