这是我的要求。
我在配置的OUTLOOK中有多个帐户。 1)1@email.com(只有一个邮箱) 2)2@email.com(多个邮箱都在那里。例如:Unix机箱,Windows Box,Mac机箱)
这里我的第二个电子邮件帐户有自己的邮箱,并链接到多个邮箱,如UNIX,Windows等。每个邮箱都有自己的收件箱和子文件夹。
现在我需要在Unix框中选择一个文件夹(收件箱)并运行代码在文件夹旁边做一些事情。
这是我拥有的
For Each oAccount In Application.Session.Accounts
If oaccount ="1@email.com" then
Set folder = ns.GetDefaultFolder(olFolderInbox) ' here it selects the inbox folder of account.
For each item in folder.items
Code goes here
next
end if
next
这适用于单个邮箱帐户,但是当我为多个邮箱帐户执行此操作时,它无法正常工作。
任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用Account
的{{3}}属性来获取其收件箱。例如:
Dim ns As NameSpace
Set ns = Application.Session
Dim acc As Account
Dim f As Folder
For Each acc In ns.Accounts
... Preconditions here ...
Set f = acc.DeliveryStore.GetDefaultFolder(olFolderInbox)
... Now, do some looping ...
Next
答案 1 :(得分:1)
扩展DanL关于循环使用ns.Folders的建议,因为我无法判断你是否理解它。
Option Explicit
Sub accTopFolder()
Dim oAccount As Account
Dim ns As Namespace
Dim fldr As folder
Dim item As Object
Dim inbx As folder
Set ns = GetNamespace("MAPI")
For Each oAccount In Session.Accounts
Debug.Print vbCr & "oAccount: " & oAccount
'
For Each fldr In ns.Folders
' Shows all the names so you can replace "test"
Debug.Print " top folder: " & fldr.name
If fldr = "test" Then
Set inbx = fldr.Folders("Inbox")
'inbx.Display
For Each item In inbx.Items
Debug.Print " item .Subject: " & item.subject
Next
Exit For
End If
Next
Next
Set inbx = Nothing
Set ns = Nothing
End Sub