我在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行,因为它似乎无法选择该子文件夹 - 正如我所说,相同的代码似乎在主要收件箱中正常工作?
由于
答案 0 :(得分:0)
请记住,Outlook会在主OST文件中保留共享默认文件夹,并且不会同步子文件夹。
你可以
1.取消选中"下载共享文件夹"复选框
2.使用扩展MAPI(C ++或Delphi) - 这将非常复杂,因为您需要检索该邮箱的自动发现XML并适当地构建商店条目ID。
3.使用Redemption - 版本RDOSession。GetSharedDefaultFolder
返回文件夹(RDOFolder)及其所有子文件夹的在线版本。