在 Excel 的 VSTO 插件中如何处理来自活动工作表的按钮单击事件?

In VSTO Addin for Excel how to handle a button click event from active worksheet?

目前我正在使用带有 VSTO 的 VB.NET 2010 开发一个 Excel 2010 插件。

活动工作表有一个按钮,它的点击事件将由它自己的 VBA 代码处理。

现在我想在不影响其原始 VBA 功能的情况下,在 Addin 中处理相同的按钮单击事件。可能吗?我怎样才能做到这一点?

此任务的先决条件是不允许对 Excel 模板(包括其 VBA 代码)进行任何更改。这就是为什么我要尝试 VB.NET.

的事件处理

触发点是Excel模板中的按钮被点击,那么它肯定会引发某个事件,而这个事件肯定会被VBA宏处理,但我想将 VB.Net 中的另一个侦听器(事件处理程序)添加到同一事件,这样我就可以做一些额外的任务。

有没有人知道如何添加这样的事件处理程序?

谢谢。

Here 是一个类似的问题。

var cmdButton = (Excel.Shape)xlWorkSheet.Shapes.AddOLEObject("Forms.CommandButton.1", Type.Missing, false, false, Type.Missing, Type.Missing, Type.Missing, 60, 60, 60, 60);

cmdButton.Name = "btnClick";

//var cmdBtn = (Microsoft.Vbe.Interop.Forms.CommandButton)Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet((Excel.Worksheet)xlApp.ActiveSheet, null, "btnClick", new object[0], null, null, null);

var cmdBtn = (Microsoft.Vbe.Interop.Forms.CommandButton)Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet((Excel.Worksheet)xlApp.ActiveSheet, null, "btnClick", new object[0], null, null, null);
//
//some button formatting codes
//
cmdBtn.Click +=cmdBtn_Click;


void cmdBtn_Click()// Command button click event handler
{
  MessageBox.Show("Test");
}

在你的情况下更简单,你不需要创建按钮,你可以只使用它的名字。