我有一个用于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
例程中。
有关如何更好地设置此功能的任何提示?
答案 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);
}
}