/ / V VSTO Addin pre Excel, ako zvládnuť udalosť kliknutia tlačidla z aktívneho pracovného hárka? - vb.net, excel, vba, vsto, excel-addins

V aplikácii VSTO Addin for Excel, ako zvládnuť udalosť kliknutia tlačidla z aktívneho pracovného hárka? - vb.net, excel, vba, vsto, excel-addins

V súčasnosti vyvíjam Excel 2010 Addin pomocou VB.NET 2010 s VSTO.

Aktívny pracovný hárok má tlačidlo a jeho kliknutie sa bude riešiť vlastným kódom VBA.

Teraz by som chcel spracovať rovnakú udalosť kliknutia tlačidla v Addine bez ovplyvnenia pôvodnej funkcie VBA. Je to možné? A ako to môžem dosiahnuť?

Predpokladom tejto úlohy je, že sa nesmie meniť nič v šablóne programu Excel (vrátane kódu VBA). To je dôvod, prečo sa snažím venovať manipuláciu so systémom VB.NET.

Spúšťacím bodom je tlačidlo v programe Excelšablóna je kliknutá, potom určite zvýši určitú udalosť a takáto udalosť bude určite spracovaná makrom VBA, ale ja by som chcela pridať ďalšieho poslucháča (obsluhu udalosti) do VB.Net na rovnakú udalosť, takže si môžem urobiť nejaké ďalšie úloha.

Je niekto vedieť, ako pridať takého spracovateľa udalostí?

Vďaka.

odpovede:

1 pre odpoveď č. 1

Tu bola podobná otázka.

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

Vo vašom prípade je jednoduchšie, nemusíte vytvárať tlačidlo, stačí použiť jeho meno.