2017-09-28 1 views
0

私はOutlookアドインにカスタムリボンを使用しています。ユーザーは読み取りモードでメールアイテムを開き、リボンのボタンをクリックすると、電子メールはフォルダ(ユーザーの個人用のメールボックスではなく、ユーザーがアクセスできる別のメールボックス)に移動します。C#VSTO Outlookエラー「オブジェクトが見つかりませんでした」

プログラムが実行されると、それは最初の時間を動作しますが、二回目は、ユーザーがそれを実行し、それはエラーがスローされます。ここでは

"The attempted operation failed. An object could not be found."

は、関連するコードです:

(のThisAddInに.cs)

public partial class ThisAddIn 
    { 
     public Outlook.Application OutlookApplication; 

     void ThisAddIn_Startup(object sender, System.EventArgs e) 
     { 
      OutlookApplication = this.Application; 
     } 
(etc) 

()button_Click時に呼び出されるメソッドでRibbon1.csにおいて

Outlook.Inspector inspector = Globals.ThisAddIn.OutlookApplication.ActiveInspector(); 
Outlook.MailItem item = inspector.CurrentItem as Outlook.MailItem; 
Outlook.Stores stores = null; 
Outlook.Folder destinationMailboxFolderInbox = null; 

try 
{ 
    // Set the mailbox move location 
    stores = Globals.ThisAddIn.OutlookApplication.GetNamespace("MAPI").Stores; 

    foreach (Outlook.Store store in stores) 
    { 
     attachmentsFoundTotal++; 
     if (store.DisplayName == destinationMailbox) 
     { 
      destinationMailboxFolderInbox = (Outlook.Folder)store.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); 
      try 
      { 
       // the code breaks on this line below: 
       item.Move(destinationMailboxFolderInbox.Folders[destinationMailboxFolder]); 
      } 
      catch (Exception ex3) 
      { 
       System.Windows.Forms.MessageBox.Show(ex3.Message + " Could not find Outlook folder " + destinationMailboxFolder + ". The mail item was not moved." ); 
      } 
     } 
    } 
} 
catch (Exception ex2) 
{ 
    System.Windows.Forms.MessageBox.Show(ex2.Message); 
} 

UPDATE:トライアル&エラーテストの後、私はOutlook 2010のバグを解決することができる唯一の方法は、このコマンドを使用して、メールアイテムが移動されたフォルダにOutlookのビュースイッチを持っていることでしたアイテムをmyfolderに移動するコマンドの後に

Globals.ThisAddIn.OutlookApplication.ActiveExplorer().CurrentFolder = myFolder; 
+0

これは、destinationMailboxFolderフォルダが存在しないことを意味しませんか? –

+0

はい、それはエラーメッセージの意味ですが、フォルダが存在する必要があります。ボタンをクリックしたのは初めてでした。おそらく、メールアイテムが移動されると、現在のコンテキストが変更され、次のアイテムがある受信トレイにリセットされます。最初にボタンをクリックすると別のフォルダを選択し、最初のフォルダに戻り、次のアイテムでもう一度ボタンをクリックすると、エラーなく動作することに気付きました。 –

+0

正しい店舗がありますか? –

答えて

0

When the program is run, it works the first time, but the second time the user runs it, it throws an error:

アイテムが別の場所に移動したときに見通しUIは更新されません。ライブ参照を取得するには、ビューを独自にリフレッシュする必要があります。どんなUIオブジェクトも古い参照を保持しています。

たとえば、Moveメソッドは、Microsoft Outlookアイテムを新しいフォルダに移動し、は、指定されたフォルダに移動されたアイテムを表すオブジェクト値を返します。

関連する問題