2015-06-22 93 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 –