短い質問: Outlookのアイテムを使用した後に正しく閉じる方法?あまりにも多くのOutlookファイルが開かれたときにCOMExceptionが発生する
問題を再現するコード:
Dim olApp As New Microsoft.Office.Interop.Outlook.Application
Dim olSelection As Microsoft.Office.Interop.Outlook.Selection = olApp.ActiveExplorer.Selection
For i As Integer = 1 To olSelection.Count 'Outlook starts counting at 1
Dim olItem As Object = olSelection(i)
Dim sSubject As String = olItem.Subject
olItem.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose.olDiscard)
Runtime.InteropServices.Marshal.ReleaseComObject(olItem)
Next
説明:
Outlookアイテムをコピーすることが可能である(基本的にMailItem
、DocumentItem
、PostItem
、任意の項目)へ私のアプリケーション。これを達成するために、アクティブなOutlookウィンドウの選択された項目について繰り返します。 それは正常に動作しますが、250以上のアイテムが選択され、COMExeption
がスローされた(別の番号構成に応じてあるかもしれない)とき:型「System.Runtime.InteropServices.COMException」が
未処理の例外Microsoft.VisualBasic.dllで発生しました
追加情報:サーバー管理者は、同時に開くことのできるアイテムの数を制限しています。開いているメッセージを閉じるか、作成中の未送信メッセージから添付ファイルと画像を削除してみてください。
私はそれらをもう必要としないときにアイテムを閉じようとしましたが、何もしないようです。同じエラーに関する
その他の質問
私は同じエラーについては約this他の質問を知っているが、私はすでに最初の2つの答えの助言及び第三、受理(そして最後の)に従います答えが私の文脈に収まらない
あなたは[この回答](http://stackoverflow.com/questions/36826927/outlook-add-in-crashes-or-your-server-administratorを確認しました-has-limited-the-number-it?rq = 1)?つまり、 'ReleaseComObject()'の後に、olItemへの参照を 'Nothing'に設定します。 –
@ SuperPeanut返信ありがとうございますが、 'ReleaseComObject'の後に' olItem = Nothing'を追加すると助けにならなかった – Breeze