在我的笔记本电脑上它可以工作,但是对于团队来说,代码只是有时有效。他们收到以下错误消息。
它应该连接到特定的 Outlook 文件夹。
当我减少代码到
Set Folder = Ns.GetSharedDefaultFolder(olShareName, olFolderInbox) '// works fine
那么他们这边就没有问题,但是当变量扩展到特定文件夹时,它会运行 10 次。
引用在 Excel 中设置,文件夹名称正确,因为它适用于我的笔记本电脑。
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
答案 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)
此外,我建议通过在单独的代码行上声明每个属性或方法调用来打破属性或方法调用链。因此,您将能够找出哪个属性或方法失败。