Netoffice - Outlook加载项 - 访问文件夹事件

时间:2016-12-29 22:19:42

标签: c# outlook netoffice

我有一个用于Microsoft Office Outlook的VBA项目,我希望在NetOffice的帮助下将其重写为Outlook加载项。

这是我要传输的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为null)。虽然此代码位于Addin_OnStartupComplete例程中。

有关如何更好地设置此功能的任何提示?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我提出的代码片段是在类方法中运行的。它是从Addin_OnStartupComplete类中的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);
    }
}