0

.net アプリケーションを使用して Microsoft Outlook にフォルダーを作成していますが、Outlook を再起動したときにのみ表示されます。Outlook を再起動しなくても、新しいフォルダーが表示されるはずです。以下のコードを使用しています:

       Outlook.NameSpace nameSpace = OutlookApp.GetNamespace("MAPI");
        Outlook.MAPIFolder folderInbox = nameSpace.GetDefaultFolder               
       (Outlook.OlDefaultFolders.olFolderInbox);
        Outlook.Folders inboxFolders = folderInbox.Folders;
        Outlook.MAPIFolder subfolderInbox = null;

        Outlook.Application oApp;
        oApp = nameSpace.Application;
        Outlook.Explorer exp = oApp.ActiveExplorer();

         subfolderInbox = inboxFolders.Add("InboxSubfolder",  
         Outlook.OlDefaultFolders.olFolderInbox);
         exp.CurrentFolder = subfolderInbox;
4

1 に答える 1

0

Add-in Expressを使用しているようです。

あなたのコードを adxRibbonButton コントロールに添付したところ、うまくいきました。
このコードをどのように呼んでいますか?
不要なオブジェクトの作成がいくつか見られ、以下の編集済みバージョンでそれらを削除しました。

また、作成した Office オブジェクトを確実に解放する必要があります

次のようにコードを更新することをお勧めします。

private void adxRibbonButton1_OnClick(object sender, IRibbonControl control, bool pressed)
    {
        Outlook.NameSpace nameSpace = OutlookApp.Session; //OutlookApp.GetNamespace("MAPI");

        Outlook.MAPIFolder folderInbox = nameSpace.GetDefaultFolder
       (Outlook.OlDefaultFolders.olFolderInbox);
        Outlook.Folders inboxFolders = folderInbox.Folders;
        Outlook.MAPIFolder subfolderInbox = null;

        //Outlook.Application oApp;
        //oApp = nameSpace.Application;
        Outlook.Explorer exp = OutlookApp.ActiveExplorer(); //oApp.ActiveExplorer();

        subfolderInbox = inboxFolders.Add("InboxSubfolder",
            Outlook.OlDefaultFolders.olFolderInbox);
            exp.CurrentFolder = subfolderInbox;

        //Release COM Objects
        if (exp != null) Marshal.ReleaseComObject(exp);
        if (subfolderInbox != null) Marshal.ReleaseComObject(subfolderInbox);
        if (inboxFolders != null) Marshal.ReleaseComObject(inboxFolders);
        if (folderInbox != null) Marshal.ReleaseComObject(folderInbox);
        if (nameSpace != null) Marshal.ReleaseComObject(nameSpace);
    }
于 2013-09-10T16:29:26.177 に答える