连接到共享邮箱收件箱的子文件夹

时间:2021-07-16 09:01:48

标签: excel vba outlook

在我的笔记本电脑上它可以工作,但是对于团队来说,代码只是有时有效。他们收到以下错误消息。

它应该连接到特定的 Outlook 文件夹。

当我减少代码到

Set Folder = Ns.GetSharedDefaultFolder(olShareName, olFolderInbox) '//  works fine

那么他们这边就没有问题,但是当变量扩展到特定文件夹时,它会运行 10 次。

引用在 Excel 中设置,文件夹名称正确,因为它适用于我的笔记本电脑。

enter image description here

在线 enter image description here `

Sub macro()

    'declare variable
     Dim olApp As Outlook.Application
     Dim Ns As Outlook.Namespace
     Dim Folder As Outlook.MAPIFolder
     Dim olShareName As Outlook.Recipient
     Dim olMailItem As Outlook.MailItem

    'clear objects
     Set olApp = Nothing
     Set Ns = Nothing
     Set olShareName = Nothing

    'set outlook variable
     Set olApp = New Outlook.Application
     Set Ns = olApp.GetNamespace("MAPI")
     Set olShareName = Ns.CreateRecipient("xxx@xx.com") /// Owner's email address
    
   
     Set Folder = Ns.GetSharedDefaultFolder(olShareName, olFolderInbox).Folders("SHAREPOINT COO").Folders("COO") '//  doesn't work
     'Set Folder = Ns.GetSharedDefaultFolder(olShareName, olFolderInbox) '//  works fine
     Set Items = Folder.Items
    
end sub

2 个答案:

答案 0 :(得分:0)

错误表示该文件夹不存在。请记住,Namespace.Folders 返回配置文件中所有商店的顶级文件夹。除非您有一个名为“收件箱”的邮箱(不是文件夹),否则该行将失败。

如果您需要收件箱文件夹,请改用 Namespace.GetDEfaultFolder(olFolderInbox)

答案 1 :(得分:0)

在调用 Recipient.Resolve 方法之前,使用 NameSpace.GetSharedDefaultFolder 方法尝试根据地址簿解析 Recipient 对象。

Set olShareName = Ns.CreateRecipient("xxx@xx.com") /// Owner's email address

olShareName.Resolve 

Set Folder = Ns.GetSharedDefaultFolder(olShareName, olFolderInbox)

此外,我建议通过在单独的代码行上声明每个属性或方法调用来打破属性或方法调用链。因此,您将能够找出哪个属性或方法失败。