Это потому, что надстройка загружается до загрузки рабочей книги, и именно тогда срабатывает OnConnection. Это по замыслу. Кроме того, он запускает только один раз , поэтому если кто-то просто откроет другую книгу, используя File -> Open, OnConnection не будет запускаться снова. Думайте о OnConnection
как о месте, где можно выполнить любую инициализацию, например, подключение к событию.
Вместо этого вы должны обработать событие WorkbookOpen
, чтобы выполнить свою логику, и подключить его к OnConnection.
Например:
public void OnConnection(object application, object connectMode, object addInInst, ref Array custom)
{
var excelApplication = ((Microsoft.Office.Interop.Excel.Application) application);
//Start listening to the WorkbookOpen event
excelApplication.WorkbookOpen += WorkbookOpen;
}
private void WorkbookOpen(Workbook wb)
{
//A workbook was opened. Do your logic here.
}