【发布时间】:2021-10-10 07:39:18
【问题描述】:
我在 Outlook 中配置了几封电子邮件,我希望能够从其中一封电子邮件中选择一个特定文件夹。
目前代码从主账户的收件箱中读取正确,可以做我需要的吗?
Set outNs = outApp.GetNamespace("MAPI")
Set outFolder = outNs.GetDefaultFolder(olFolderInbox)
If Not outFolder Is Nothing Then
For Each outItem In outFolder.Items
If outItem.Class = Outlook.OlObjectClass.olMail Then
Set outMailItem = outItem
If InStr(1, outMailItem.Subject, subjectFilter) > 0 Then 'removed the quotes around subjectFilter
For Each outAttachment In outMailItem.Attachments
If Dir(saveFolder, vbDirectory) = "" Then FSO.CreateFolder (saveFolder)
outAttachment.SaveAsFile saveFolder & " - " & outAttachment.fileName
Set outAttachment = Nothing
Next
End If
End If
Next
End If
我尝试了以下代码,但收到以下消息:
对象不支持该属性或方法
For Each objStore In Application.Session.Stores
If objStore = "++++++@o+++++.com" Then
Set outNs = outApp.GetNamespace("MAPI")
Set outFolder = outNs.GetDefaultFolder(olFolderInbox)
If Not outFolder Is Nothing Then
For Each outItem In outFolder.Items
If outItem.Class = Outlook.OlObjectClass.olMail Then
Set outMailItem = outItem
If InStr(1, outMailItem.Subject, subjectFilter) > 0 Then 'removed the quotes around subjectFilter
For Each outAttachment In outMailItem.Attachments
If Dir(saveFolder, vbDirectory) = "" Then FSO.CreateFolder (saveFolder)
outAttachment.SaveAsFile saveFolder & outAttachment.Filename
Set outAttachment = Nothing
Next
End If
End If
Next
End If
End If
Next
最后代码如下并且可以正常工作:
Set outNs = outApp.GetNamespace("MAPI")
Set outFolder = outNs.Folders("+++++++++++@+++++.com").Folders("Inbox") 'GetDefaultFolder(olFolderInbox)
If Not outFolder Is Nothing Then
For Each outItem In outFolder.Items
If outItem.Class = Outlook.OlObjectClass.olMail Then
Set outMailItem = outItem
If InStr(1, outMailItem.Subject, subjectFilter) > 0 Then 'removed the quotes around subjectFilter
For Each outAttachment In outMailItem.Attachments
If Dir(saveFolder, vbDirectory) = "" Then FSO.CreateFolder (saveFolder)
outAttachment.SaveAsFile saveFolder & outAttachment.Filename
Set outAttachment = Nothing
Next
End If
End If
Next
End If
【问题讨论】:
-
您的意思是要访问其他
Account的收件箱吗?如果是这样,那么您是否尝试过在outNS中循环Accounts属性?找到帐户后,您可以使用account.DeliveryStore.GetDefaultFolder(6)获取收件箱 -
我正在尝试选择 Outlook 中配置的帐户的文件夹或收件箱。
-
@RaymondWu 我刚刚尝试修改代码但它不起作用。
-
循环
outNS.Accounts然后检查每个Account的UserName或DisplayName属性,无论您可以使用哪个属性来识别。 docs.microsoft.com/en-us/office/vba/api/… -
这能回答你的问题吗? Get reference to additional Inbox
标签: vba email outlook directory subdirectory