OnConnection надстройки Excel вызывается перед загрузкой книги - PullRequest
0 голосов
/ 18 ноября 2011

Кто-нибудь знает, почему, когда я загружаю книгу (двойной щелчок по файлу .xls, который уже создан), моя OnConnection вызывается в моей надстройке перед загрузкой книги.Это приводит к тому, что мой ((Microsoft.Office.Interop.Excel.Application)application).ActiveWorkbook становится нулевым.

Если я просто открою Excel из ярлыка Excel, он загрузит Book1.xls (книга по умолчанию) и будет создан экземпляр ActiveWorkbook.

Почему это так, и что я могу сделать, чтобы моя ActiveWorkbook загружалась до того, как моя OnConnection вызывается при загрузке из файла.

Я использую Excel 2003 SP3

1 Ответ

0 голосов
/ 18 ноября 2011

Это потому, что надстройка загружается до загрузки рабочей книги, и именно тогда срабатывает 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...