0

我有一个 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为空)中获得对正在运行的应用程序的引用。虽然这段代码在Addin_OnStartupComplete例程中。

关于如何更好地进行设置的任何提示?

4

1 回答 1

0

我找到了解决方案。我发布的代码片段在类方法中运行。它是从类中调用的Addin_OnStartupCompleteAddin由 NetOffice 开发人员工具箱自动生成)。我可以获得对正在运行的应用程序的引用:它是类的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);
    }
}
于 2016-12-30T16:17:09.667 回答