Получение события, вызываемого после загрузки документа

Как создать метод, который будет вызываться сразу после загрузки документа (с помощью Excel-DNA)?
Есть ли поддержка такой функции в Excel-DNA?


person user626528    schedule 17.08.2016    source источник


Ответы (1)


Из надстройки Excel-DNA у вас есть полный доступ как к C API, так и к объектной модели COM. В этом случае объектная модель COM предоставляет события для отслеживания открытых книг.

В библиотеку надстроек можно добавить ссылку на сборку взаимодействия Microsoft.Office.Interop.Excel либо напрямую, либо с помощью пакета ExcelDna.Interop NuGet.

Кроме того, есть два требования для безопасного использования объектной модели COM из надстройки Excel-DNA:

  1. Выполняйте COM-вызовы только из основного потока Excel.
  2. Получите корневой объект Application для размещенного экземпляра Excel с помощью вызова ExcelDnaUtil.Application.

Чтобы получать уведомления об открытии рабочей книги, вы затем добавляете обработчики событий NewWorkbook и WorkbookOpen для объекта Application.

person Govert    schedule 17.08.2016
comment
Есть ли способ заставить это работать со всеми версиями Excel с 2007 года? - person user626528; 18.08.2016
comment
Эта часть объектной модели COM одинакова во всех этих версиях, поэтому ваш код .NET будет работать во всех версиях. - person Govert; 18.08.2016
comment
Но пакет NuGet предназначен для Excel 2010. Будет ли он работать, если я просто использую этот пакет и устанавливаю свою надстройку в другую версию Excel? - person user626528; 18.08.2016
comment
Да - будет работать нормально. Это то же самое, как если бы вы написали код на VBA в Excel 2010 — он будет работать и в Excel 2007 или Excel 2016, если вы используете только те части объектной модели, которые доступны в версии Excel, в которой он работает. - person Govert; 18.08.2016