ボタンまたはリンクをスプレッドシートに追加すると、クリックイベントが機能します。ただし、スプレッドシートを保存して閉じてから再度開くと、イベントは発生しません。
AddControl(xlApp, ((TaskPaneView)this.Parent).factory, "text", "A1");
public void AddControl(Microsoft.Office.Interop.Excel.Application xlApp, Microsoft.Office.Tools.Excel.ApplicationFactory factory, string controlText, string address)
{
Microsoft.Office.Interop.Excel.Worksheet nativeWorksheet = xlApp.ActiveWorkbook.ActiveSheet;
Microsoft.Office.Tools.Excel.Worksheet vstoWorksheet = factory.GetVstoObject(nativeWorksheet);
var btn = new Microsoft.Office.Tools.Excel.Controls.Button();
btn.Name = "link1";
btn.Text = controlText;
btn.Click += new EventHandler(btn_Click);
vstoWorksheet.Controls.AddControl(btn, nativeWorksheet.Range[address], controlText);
}
void btn_Click(object sender, EventArgs e)
{
}
WorkBookを開いたときにイベントを再度フックする簡単な方法はありますか?
ブックでボタンとAddHandlerを手動で検索する必要があると思います。
編集:これは文書化されていますが、スプレッドシートを閉じた後の問題については言及されていません:アプリケーションレベルのプロジェクトで実行時にワークシートにコントロールを追加する