События папки надстройки Netoffice — Outlook

У меня есть проект VBA для Microsoft Office Outlook, который я хотел бы переписать как надстройку Outlook с помощью NetOffice.

Вот кусок кода VBA, который я хотел бы передать:

Dim objNS As Outlook.NameSpace
Set objNS = Application.GetNamespace("MAPI")
Set m_colCalendarItems = objNS.GetDefaultFolder(olFolderCalendar).Items

Application представляет запущенное приложение Outlook.

Мой соответствующий код в NetOffice выглядит следующим образом:

Outlook.Application objApp = Outlook.Application.GetActiveInstance();
Outlook._NameSpace objNS = (Outlook._NameSpace)objApp.GetNamespace("MAPI");
m_colCalendarItems = (Outlook.Items)objNS.GetDefaultFolder(OlDefaultFolders.olFolderCalendar).Items;

Довольно много слепков, конечно, это может быть обработано лучше. Но главная проблема в том, что я не получаю ссылку на запущенное приложение в первой строке ( objAppis null). Хотя этот код находится в Addin_OnStartupCompleteрутине.

Любые советы о том, как настроить это лучше?

1 ответ

  1. Я нашел решение. Фрагмент кода I postet выполняется в методе класса. Он вызывается из класса Addin_OnStartupCompletein Addin(автоматически генерируется Netoffice Developer Toolbox).
    Я могу получить ссылку на запущенное приложение: это Applicationсвойство Addinкласса. Я могу предоставить это вызываемому методу:

    public class Addin : Outlook.Tools.COMAddin // this was auto-generated by the NetOffice Developer Toolbox
    {
        FolderEvents m_folderevents = new FolderEvents(); // 'FolderEvents' is my class
    
        // additional auto-generated code removed
    
        private void Addin_OnStartupComplete(ref Array custom)
        {
            m_folderevents.InitFolders(this.Application);
        }
    }