/ / No VSTO Addin para Excel como lidar com um botão clique em um evento da planilha ativa? - vb.net, excel, vba, vsto, excel-addins

No VSTO Addin para o Excel como lidar com um botão clique em um evento da planilha ativa? - vb.net, excel, vba, vsto, excel-addins

Atualmente estou desenvolvendo um Addin do Excel 2010 usando o VB.NET 2010 com o VSTO.

A planilha ativa tem um botão, seu evento de clique será manipulado pelo seu próprio código VBA.

Agora gostaria de manipular o mesmo evento de clique de botão no Addin sem afetar sua função VBA original. É possível? E como posso conseguir isso?

O pré-requisito desta tarefa é que nada pode ser alterado no Modelo do Excel (incluindo seu código VBA). É por isso que estou tentando a partir do gerenciamento de eventos pelo VB.NET.

O ponto de partida é que o botão no Excelmodelo é clicado, então ele certamente irá aumentar determinado evento, e tal evento certamente será tratado pela macro VBA, mas eu gostaria de adicionar outro ouvinte (manipulador de eventos) em VB.Net para o mesmo evento, para que eu possa fazer alguns adicionais tarefa.

Existe alguém sabe como adicionar esse manipulador de eventos?

Obrigado.

Respostas:

1 para resposta № 1

Aqui foi uma questão semelhante.

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");
}

No seu caso, é mais fácil, você não precisa criar um botão, você pode simplesmente usar o nome dele.