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