如何在VBA中设置共享默认文件夹的Outlook子文件夹?

时间:2019-07-08 16:09:30

标签: excel vba outlook outlook-vba

我正在尝试从共享的Outlook收件箱中提取信息。当我尝试将Outlook文件夹设置为共享olFolderInbox的子文件夹时,会出现问题。奇怪的是,有时宏会完美运行并提取我需要的数据。但是,有时宏即使找不到代码也无法找到Folder对象并显示错误消息。

当我将文件夹设置为主收件箱(olFolderInbox)时,代码可以正常工作,但是,当我尝试将其设置为特定的子文件夹时,代码有时会失败。我确保子文件夹名称正确。

这是我的代码:

Dim OutlookNameSpace As Outlook.Namespace
Dim OutlookFolder As Outlook.Folder
Dim OutlookMail As Outlook.MailItem
Dim ObjOwner As Outlook.Recipient

Set OutlookNameSpace = Outlook.Application.GetNamespace("MAPI")
Set ObjOwner = OutlookNameSpace.CreateRecipient("EmailName@email.ca")
ObjOwner.Resolve

If ObjOwner.Resolved Then

  Set OutlookFolder = OutlookNameSpace.GetSharedDefaultFolder _ 
  (ObjOwner, olFolderInbox).Folders("FolderName")

End If

我收到的错误消息是:

"Run-time error '-2147221233 (8004010f)':
The attempted operation failed. An object could not be found."

调试工具将突出显示我尝试将子文件夹设置为Outlook文件夹的行。

当我注释掉:.Folders(“ FolderName”)宏运行正常时。

如果您能告诉我为什么这段代码有时起作用,而其他时候却失败了,它将对我有很大帮助!

谢谢!

1 个答案:

答案 0 :(得分:1)

请记住,如果代理默认文件夹被缓存(在主邮箱的OST文件中),则子文件夹将不存在。

尝试关闭代理文件夹的缓存-取消选中“ Exchange帐户属性”对话框“高级”选项卡上的“下载共享文件夹”复选框。