Я успешно реализован Microsoft образец «Пошаговое руководство: Синхронизация настраиваемой области задач с кнопкой ленточки», которая находится здесь: http://msdn.microsoft.com/en-us/library/bb608590.aspxПользовательские панели задач с несколькими открытыми тетрадями
Сначала я столкнулся с проблемой с панелью задач не показав, что оказалось результатом некоторого конфликта между моей надстройкой и Microsoft Analysis Toolpack. Как только я отключил 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 + "*";
}
}
}
}
}
Остальная часть кода просто, как в примере.
Есть ли способ изменить пример, чтобы он работал для открытия нескольких книг? Я хочу, чтобы один и тот же Add-In появлялся в каждом окне книги, с той же лентой и с той же пользовательской панелью. И, конечно же, для того, чтобы какие-либо действия с лентой (например, нажатие кнопки) направились к панели настраиваемых задач, которая появляется в том же окне.