共享邮箱中的Outlook VBA访问文件夹

时间:2018-06-11 16:39:14

标签: vba outlook

我在Outlook中有一些VBA代码,它对主邮箱表现得很好 - 但是当我添加辅助邮箱时,相同的代码正在挣扎 - 这是Outlook 2016。

它似乎在努力阅读子文件夹 - 我可以让它读取收件箱中的邮件项目,但不能读取子文件夹。

代码:

Dim sharedemail As Outlook.Recipient
Dim myOlApp As New Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.MAPIFolder
Dim myDestFolder Outlook.MAPIFolder
Dim strSubject As String
Dim i As Integer

Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set sharedemail = myNameSpace.CreateRecipient("recip@domain.com")
Set myInbox = myNameSpace.GetSharedDefaultFolder(sharedemail, olFolderInbox)  

For itemCount = myInbox.items.Count To 1 Step -1 'Iterates from the end backwards

    Set item = myInbox.items(itemCount)
    strSubject = UCase(item.Subject)

    Select Case True

        Case InStr(strSubject, UCase("Holiday Request")) > 0
        'Set destination folder
        Set myDestFolder = myInbox.Folders("HolidayRequests")
        'move the email out of inbox
        item.Move myDestFolder

    End Select

Next

它停在Set myDestFolder行,因为它似乎无法选择该子文件夹 - 正如我所说,相同的代码似乎在主要收件箱中正常工作?

由于

1 个答案:

答案 0 :(得分:0)

请记住,Outlook会在主OST文件中保留共享默认文件夹,并且不会同步子文件夹。

你可以 1.取消选中"下载共享文件夹"复选框
2.使用扩展MAPI(C ++或Delphi) - 这将非常复杂,因为您需要检索该邮箱的自动发现XML并适当地构建商店条目ID。
3.使用Redemption - 版本RDOSessionGetSharedDefaultFolder返回文件夹(RDOFolder)及其所有子文件夹的在线版本。