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 № 1Aqui 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.