在excel 2010中,使用excel dna和excel互操作我附加到每个工作表的选择更改。
我正在使用app.WorkbookActivate并尝试枚举打开的工作簿。
通过工作簿激活它适用于新书/工作表。 但是 - 对于打开的工作簿,它没有附加。没有错误,它只是不起作用
如果您打开新工作簿然后切换回
,它将附加到该原始工作簿任何人都知道为什么?
这是代码。
using ExcelDna.Integration;
using XL = Microsoft.Office.Interop.Excel;
....
/// in an init method
//add event listeners to open work books and on new work books
XL.Application xlapp = (XL.Application)ExcelDnaUtil.Application;
xlapp.WorkbookActivate += Xlapp_WorkbookActivate;
ListenOnOpenWorkBooks();
private static void ListenOnOpenWorkBooks()
{
XL.Application xlapp = (XL.Application)ExcelDnaUtil.Application;
foreach (XL.Workbook wb in xlapp.Workbooks)
{
foreach (XL.Worksheet s in wb.Sheets)
{
s.SelectionChange += S_SelectionChange;
}
}
}
private static void Xlapp_WorkbookActivate(XL.Workbook Wb)
{
//TODOL check if already listening
foreach (XL.Worksheet s in Wb.Sheets)
{
s.SelectionChange += S_SelectionChange;
}
}
private static void S_SelectionChange(XL.Range range)
{
///do something
}
答案 0 :(得分:1)
我找到了解决方法,我可以使用应用程序事件处理程序来监听所有工作表更改。发布此处以防其他人遇到此问题。
XL.Application xlapp = (XL.Application) ExcelDnaUtil.Application;
xlapp.SheetSelectionChange += Xlapp_SheetSelectionChange;