2014-03-28 27 views
0

我試圖將約會項目從PST文件複製到用戶郵箱(作爲存檔)類型日曆的子文件夾。我也在複製郵件和聯繫人,並且完美地工作。我正在做的是製作每個項目的副本並將其移至新位置。目標MAPIFolder是用戶郵箱的類型的子文件夾(S)olFolderInbox,olFolderCalendar和olFolderContactsOutlook互操作從PST文件複製約會項目到其他日曆

Microsoft.Office.Interop.Outlook.AppointmentItem clone = app.CreateItem((OlItemType.olAppointmentItem)); 
        AppointmentItem source = item as AppointmentItem; 
        clone = source.Copy(); 
        clone.Move(destination); 

一些項目得到複製(如一個重複全天事件),但最重要的是不是一個子文件夾。相反,代碼是在pst文件的源日曆中創建多個副本!

引發異常調用source.Copy()時的例外,我得到:

System.ArgumentException was caught _HResult=-2147024809 
_message=Could not complete the operation. One or more parameter values are not valid. 
HResult=-2147024809 IsTransient=false Message=Could not complete the operation. 
One or more parameter values are not valid. Source=Microsoft Outlook StackTrace: at Microsoft.Office.Interop.Outlook._AppointmentItem.Copy() 
    at Program.cs:line 679 InnerException: 

如前所述相同的代碼運行在郵件和聯繫人項目和一些日曆項罰款。

讓我瘋狂!請幫忙。

感謝

回答

0

Outlook會嘗試當它決定一個特定的項目是否可以被複制或移動到運行其業務邏輯,並調用處理更新刪除通知,甚至跑步方式腳本(如果使用/自定義窗體)。如果使用Redemption是一個選項,請嘗試如下所示 - 兌換並不嘗試花俏。

RDOSession Session = new RDOSession(); 
    Session.MAPIOBJECT = Application.Session.MAPIOBJECT; 
    RDOMail rItem = (RDOMail)Session.GetRDOObjectFromOutlookObject(item); 
    RDOFolder rDestination = (RDOFolder)Session.GetRDOObjectFromOutlookObject(destination); 
    rItem.CopyTo(rDestination); 
+0

非常感謝。我設法通過創建一個新約會來解決問題,並從源文件複製屬性。無論如何,我會在下一次遇到Interop模型中的下一個奇怪事物時看看Redemption ;-) – MortenF

相關問題