/ / In VSTO Addin per Excel come gestire un evento click del pulsante dal foglio di lavoro attivo? - vb.net, excel, vba, vsto, excel-addin

In VSTO Addin per Excel come gestire un evento click del pulsante dal foglio di lavoro attivo? - vb.net, excel, vba, vsto, excel-addin

Attualmente sto sviluppando un componente aggiuntivo di Excel 2010 utilizzando VB.NET 2010 con VSTO.

Il foglio di lavoro attivo ha un pulsante, il suo evento click sarà gestito dal proprio codice VBA.

Ora vorrei gestire lo stesso evento di clic sui pulsanti in Addin senza influire sulla sua funzione VBA originale. È possibile? E come posso ottenere questo?

Il prerequisito di questa attività è che non è consentito modificare nulla sul modello di Excel (incluso il suo codice VBA). Ecco perché sto provando dalla gestione degli eventi di VB.NET.

Il punto di attivazione è il pulsante in Excelil modello viene cliccato, quindi sicuramente aumenterà determinati eventi, e tale evento sarà certamente gestito dalla macro VBA, ma vorrei aggiungere un altro listener (gestore di eventi) in VB.Net allo stesso evento, così posso fare qualche altro compito.

Qualcuno sa come aggiungere questo gestore di eventi?

Grazie.

risposte:

1 per risposta № 1

Qui era una domanda simile.

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

Nel tuo caso è più facile, non hai bisogno di creare un pulsante, puoi semplicemente usarlo come nome.