电子表格重新打开时,Excelbutton事件不会触发

当我添加一个button或链接到电子表格时,click事件起作用。 但是,当我保存电子表格,closures它,并重新打开事件不会触发。

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时,是否有一种简单的方法来重新连接事件?

我想我将不得不手动searchbutton和AddHandler的工作簿。

编辑:这是logging,但closures电子表格后没有提到的问题: 在运行时在应用程序级项目中添加控件到工作表

在这里输入图像说明

当文档被保存然后closures时,所有dynamic主机控件都将从文档中删除。 只有底层的本机Office对象保留在后面。 。


我现在可以用另外一种方法做,用代码创buildVBAbutton,以使用Add-Infunction :

VBA代码:

 Dim oAddin As COMAddIn Dim oCOMFuncs As Object Set oAddin = Application.COMAddIns(ExcelAddInNameSpace") Set oCOMFuncs = oAddin.Object oCOMFuncs.CallAFunctionOfAddIn 

或者使用上下文菜单的另一种方式(当在NamedRanges上时)。


来自MSFT的更多信息:

但是问题在于:如果保存工作簿,请在安装了插件的计算机或干净的机器上打开它,此时此button不起作用!

所以我们可以看到,通过加载项将控件添加到文档表面没有太多意义,因为控件可能会失去其function。 这就是为什么我们通常build议使用自定义任务窗格,而不是将控件添加到文档的表面上。 看看下面的文件:

http://msdn.microsoft.com/en-us/library/aa942864.aspx

http://msdn.microsoft.com/en-us/library/aa338197(v=office.12).aspx