2016-12-29 4 views
0

Ich habe ein VBA-Projekt für Microsoft Office Outlook, das ich mit Hilfe von NetOffice als Outlook-Add-in neu schreiben möchte.NetOffice - Outlook-Add-In - Zugriff auf Ordner Ereignisse

Hier ist ein Stück von VBA-Code, den ich übertragen möchten:

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

Application stellt die Ausführung von Outlook-Anwendung.

Mein jeweiligen Code in NetOffice sieht wie folgt aus:

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

Ganz viele Würfe, sicher können dies besser gehandhabt werden. Aber das Hauptproblem ist, dass ich keinen Verweis auf die laufende Anwendung in der ersten Zeile bekomme (objApp ist null). Obwohl dieser Code in der Routine ist.

Irgendwelche Tipps, wie Sie das besser einrichten können?

Antwort

0

Ich fand die Lösung. Das Code-Snippet, das ich geschrieben habe, wird in einer Klassenmethode ausgeführt. Es wird von der Addin_OnStartupComplete in der Addin Klasse aufgerufen (automatisch generiert von der NetOffice Developer Toolbox). Ich kann einen Verweis auf die laufende Anwendung erhalten: Es ist die Application Eigenschaft der Addin Klasse. Ich kann dies der aufgerufenen Methode zur Verfügung stellen:

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); 
    } 
} 
Verwandte Themen