2016-12-29 50 views
0

Microsoft Office Outlook用のVBAプロジェクトがありますが、これはNetOfficeの助けを借りてOutlookアドインとして書き直したいものです。Netoffice - Outlookアドイン - アクセスフォルダイベント

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

Applicationが実行されているOutlookアプリケーションを表します

は、ここで私は転送したいVBAコードの一部です。

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

キャストの非常に多く、確かにこれはよりよく処理することができます。

NetOfficeで私のそれぞれのコードは次のようになります。しかし、主な問題は、私が最初の行(objAppがヌル)で実行中のアプリケーションへの参照を取得しないということです。このコードはAddin_OnStartupCompleteルーチンにありますが。

これをよりうまく設定するためのヒントを教えてください。

答えて

0

解決策が見つかりました。私が投稿したコードスニペットは、クラスメソッドで実行されています。これはAddinクラスのAddin_OnStartupCompleteから呼び出されます(NetOffice Developer Toolboxによって自動生成されます)。 実行中のアプリケーションへの参照を取得できます。AddinクラスのApplicationプロパティです。私はこれを呼び出されたメソッドに提供できます:

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); 
    } 
} 
関連する問題