我已经成功实现了此处的 Microsoft 示例“演练:使用功能区按钮同步自定义任务窗格”:http: //msdn.microsoft.com/en-us/library/bb608590.aspx
最初我遇到了任务窗格未显示的问题,结果证明这是我的加载项与 Microsoft 的“分析工具包”之间存在一些冲突的结果。一旦我禁用了分析工具包,自定义任务窗格就会开始按预期显示和隐藏。
然后,我编写了一些代码来在用户按下按钮时更改选定范围内的单元格。这似乎工作得很好——直到我打开另一个工作簿!每个工作簿窗口都有自己的加载项功能区,但是当我单击切换按钮打开/关闭自定义任务窗格时,它只会打开/关闭创建的第一个窗口的自定义任务窗格。这与我在哪个窗口中单击切换按钮无关。
该代码在 ThisAddIn_Startup 中实例化 CustomTaskPane 对象(就像在示例代码中一样)。我唯一真正添加的是 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 + "*";
}
}
}
}
}
其余代码与示例中的一样。
有没有办法更改示例,使其适用于打开的多个工作簿?我想要的是相同的加载项出现在每个工作簿窗口中,具有相同的功能区和相同的自定义窗格。当然,让任何功能区操作(例如按下按钮)路由到出现在同一窗口中的自定义任务窗格。