在outlook中数据都是存放在具体的文件夹内的,文件夹之间具有层级关系。
收件箱就属于一个文件夹,可以使用NameSpace对象的GetDefaultFolder方法直接获得默认的文件夹对象Folder,如收件箱文件夹,发件箱文件夹对象等。
所有文件夹下的邮件构成了Items集合对象。
以下vba代码举例示范了如何用vba遍历收件箱中的所有邮件,并将邮件的附件另存在本地电脑上:
Sub QQ1722187970()
Dim sPath As String
sPath = Excel.ThisWorkbook.Path & "\"
Dim objAccount As Outlook.Account
Dim objOutlookApp As Outlook.Application
Set objOutlookApp = New Outlook.Application
Dim objNamespace As Outlook.Namespace
Dim objFolder As Outlook.Folder
Dim objItems As Outlook.Items
'邮件附件对象
Dim objAttachment As Outlook.Attachment
With objOutlookApp
Set objNamespace = .Session
'与Session属性一样的效果
Set objNamespace = .GetNamespace("MAPI")
With objNamespace
'获取收件箱文件夹
Set objFolder = .GetDefaultFolder(olFolderInbox)
With objFolder
Dim objMailItem As Outlook.MailItem
'遍历每个邮件
For i = 1 To .Items.Count
Set objMailItem = .Items(i)
With objMailItem
'输出每个邮件的主题
strSubject = .Subject
'输出每个邮件的创建时间
dateCreationTime = .CreationTime
For Each objAttachment In .Attachments
With objAttachment
'附件的名称
sName = .DisplayName
'将附件另存到本地
.SaveAsFile sPath & sName
End With
Next
' .Display
End With
Next i
End With
End With
End With
End Sub


发表评论