У меня есть проект 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;
Довольно много слепков, конечно, это может быть обработано лучше. Но главная проблема в том, что я не получаю ссылку на запущенное приложение в первой строке ( objApp
is null). Хотя этот код находится в Addin_OnStartupComplete
рутине.
Любые советы о том, как настроить это лучше?
Я нашел решение. Фрагмент кода I postet выполняется в методе класса. Он вызывается из класса
Addin_OnStartupComplete
inAddin
(автоматически генерируется Netoffice Developer Toolbox).Я могу получить ссылку на запущенное приложение: это
Application
свойствоAddin
класса. Я могу предоставить это вызываемому методу: