2015-06-22 38 views
2

我在Windows應用程序中使用了兌換。在那裏,我寫了這個代碼GetSharedDefaultFolder()拋出錯誤 - 兌換

try 
{ 
    rFolder = rSession.GetSharedDefaultFolder(memberName, rdoDefaultFolders.olFolderCalendar); 
    rItems = rFolder.Items; 
} 

但執行包括Session.GetSharedDefaultFolder()線的時候,它會拋出以下異常。

「錯誤IAddrBook.ResolveName:MAPI_E_NOT_FOUND」

我在網上搜索了這個問題,但我沒能得到的東西直線前進。請指教我。

+0

這可能是微軟的錯誤,就像在這種情況下一樣,安裝相關的更新修復了這個問題:https://support.microsoft.com/en-us/kb/2645789 – Nick

+0

哦。真??我會考慮這一點。感謝您使用我的建議 –

+0

,rFolder = rSession.GetDefaultFolder(rdoDefaultFolders.olFolderCalendar);並解決了目前的問題。但我真的需要運行GetSharedDefaultFolder() –

回答

1

你將什麼傳遞給GetSharedDefaultFolder?在Outlook中的「編輯」框中Outlook中是否可以解析該名稱?

請記住,GetSharedDefaultFolder接受一個字符串或一個RDOAddressEntry對象。在後一種情況下,沒有什麼可以解決的,所以如果你已經有一個RDOAddressEntry對象的實例,那麼傳遞它來代替一個字符串可能更可靠。

+0

http:// stackoverflow。 COM /文檔/ Outlook的插件/提交 –

1

爲什麼你需要使用贖回?

相反,我建議使用Namespace類的GetSharedDefaultFolder方法。它返回一個Folder對象,該對象表示指定用戶的指定默認文件夾。

Sub ResolveName() 
    Dim myNamespace As Outlook.NameSpace 
    Dim myRecipient As Outlook.Recipient 
    Dim CalendarFolder As Outlook.Folder 
    Set myNamespace = Application.GetNamespace("MAPI") 
    Set myRecipient = myNamespace.CreateRecipient("Eugene Astafiev") 
    myRecipient.Resolve 
    If myRecipient.Resolved Then 
    Call ShowCalendar(myNamespace, myRecipient) 
    End If 
End Sub 

Sub ShowCalendar(myNamespace, myRecipient) 
    Dim CalendarFolder As Outlook.Folder 
    Set CalendarFolder = _ 
    myNamespace.GetSharedDefaultFolder _ 
    (myRecipient, olFolderCalendar) 
    CalendarFolder.Display 
End Sub 

請注意,您需要將Recipient類(已解析)的實例傳遞給方法,而不僅僅是成員名稱。

運行上面列出的代碼(當然,使用有效名稱)時是否出現錯誤?

+0

http://stackoverflow.com/documentation/outlook-addin/commit –