ここにあるマイクロソフトのサンプル「ウォークスルー: カスタム タスク ペインとリボン ボタンの同期」を正常に実装しました: 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 + "*";
}
}
}
}
}
コードの残りの部分は、例と同じです。
開いている複数のワークブックで機能するように例を変更する方法はありますか? 私が望むのは、同じアドインが各ワークブック ウィンドウに表示され、同じリボンと同じカスタム ペインが表示されることです。そしてもちろん、リボン アクション (ボタンを押すなど) を同じウィンドウ内に表示されるカスタム作業ウィンドウにルーティングします。