KutoolsforOffice — 一套方案,五大工具。事半功倍。

如何将多个文件夹或子文件夹中的邮件批量导出到 Outlook 的 Excel 表格中?

作者Kelly修改日期

如果您仍在依赖手动操作或 Outlook 的有限功能,将多个文件夹或子文件夹中的邮件导出到 Excel 可能会变得异常繁琐。幸运的是,您还有更高效的选择。本文将为您介绍两种方法:一种是基于 VBA 的灵活方案,另一种则是利用 Kutools for Outlook 提供的便捷、人性化工具。VBA 方法虽然灵活,但设置和调整相对复杂;而 Kutools for Outlook 只需简单几步,即可轻松将邮件批量导出为 Excel,显著节省您的时间和精力。以下将为您详细介绍操作步骤。

使用 VBA 将多个文件夹/子文件夹邮件导出到 Excel复杂但灵活

使用 Kutools for Outlook 将某文件夹/子文件夹邮件导出到 Excel 👍高效且易用


使用 VBA 将多个文件夹/子文件夹邮件导出到 Excel

如果您具备编程基础并希望灵活定制解决方案,VBA 将是您的高效之选。通过此方法,您可以指定多个文件夹或子文件夹,将其中的邮件分别导出为 Excel 文件。但请注意,该方式需要一定的技术能力,并需对代码进行细致调整。

步骤 1:打开 VBA 编辑器

按下 Alt+F11,即可打开“Microsoft Visual Basic for Applications”窗口,轻松开始高效编程体验。

步骤 2:插入新模块

点击“插入”>“模块”,然后将以下 VBA 代码粘贴到新建的模块窗口中。

VBA:将多个文件夹及子文件夹邮件导出到 Excel

Const MACRO_NAME = "Export Outlook Folders to Excel"
Sub ExportMain()
ExportToExcel "destination_folder_path\A.xlsx", "your_email_account\folder\subfolder_1"
ExportToExcel "destination_folder_path\B.xlsx", "your_email_account\folder\subfolder_2"
MsgBox "Process complete.", vbInformation + vbOKOnly, MACRO_NAME
End Sub

Sub ExportToExcel(strFilename As String, strFolderPath As String)
Dim olkMsg As Object
Dim olkFld As Object
Dim excApp As Object
Dim excWkb As Object
Dim excWks As Object
Dim intRow As Integer
Dim intVersion As Integer

If strFilename <> "" Then
If strFolderPath <> "" Then
Set olkFld = OpenOutlookFolder(strFolderPath)
If TypeName(olkFld) <> "Nothing" Then
intVersion = GetOutlookVersion()
Set excApp = CreateObject("Excel.Application")
Set excWkb = excApp.Workbooks.Add()
Set excWks = excWkb.ActiveSheet
With excWks
.Cells(1, 1) = "Subject"
.Cells(1, 2) = "Received"
.Cells(1, 3) = "Sender"
End With
intRow = 2
For Each olkMsg In olkFld.Items
If olkMsg.Class = olMail Then
excWks.Cells(intRow, 1) = olkMsg.Subject
excWks.Cells(intRow, 2) = olkMsg.ReceivedTime
excWks.Cells(intRow, 3) = GetSMTPAddress(olkMsg, intVersion)
intRow = intRow + 1
End If
Next
Set olkMsg = Nothing
excWkb.SaveAs strFilename
excWkb.Close
Else
MsgBox "The folder '" & strFolderPath & "' does not exist in Outlook.", vbCritical + vbOKOnly, MACRO_NAME
End If
Else
MsgBox "The folder path was empty.", vbCritical + vbOKOnly, MACRO_NAME
End If
Else
MsgBox "The filename was empty.", vbCritical + vbOKOnly, MACRO_NAME
End If

Set olkMsg = Nothing
Set olkFld = Nothing
Set excWks = Nothing
Set excWkb = Nothing
Set excApp = Nothing
End Sub

Public Function OpenOutlookFolder(strFolderPath As String) As Outlook.MAPIFolder
Dim arrFolders As Variant
Dim varFolder As Variant
Dim bolBeyondRoot As Boolean

On Error Resume Next
If strFolderPath = "" Then
Set OpenOutlookFolder = Nothing
Else
Do While Left(strFolderPath, 1) = "\"
strFolderPath = Right(strFolderPath, Len(strFolderPath) - 1)
Loop
arrFolders = Split(strFolderPath, "\")
For Each varFolder In arrFolders
Select Case bolBeyondRoot
Case False
Set OpenOutlookFolder = Outlook.Session.Folders(varFolder)
bolBeyondRoot = True
Case True
Set OpenOutlookFolder = OpenOutlookFolder.Folders(varFolder)
End Select
If Err.Number <> 0 Then
Set OpenOutlookFolder = Nothing
Exit For
End If
Next
End If
On Error GoTo 0
End Function

Function GetSMTPAddress(Item As Outlook.MailItem, intOutlookVersion As Integer) As String
Dim olkSnd As Outlook.AddressEntry
Dim olkEnt As Object

On Error Resume Next
Select Case intOutlookVersion
Case Is < 14
If Item.SenderEmailType = "EX" Then
GetSMTPAddress = SMTPEX(Item)
Else
GetSMTPAddress = Item.SenderEmailAddress
End If
Case Else
Set olkSnd = Item.Sender
If olkSnd.AddressEntryUserType = olExchangeUserAddressEntry Then
Set olkEnt = olkSnd.GetExchangeUser
GetSMTPAddress = olkEnt.PrimarySmtpAddress
Else
GetSMTPAddress = Item.SenderEmailAddress
End If
End Select
On Error GoTo 0
Set olkSnd = Nothing
Set olkEnt = Nothing
End Function

Function GetOutlookVersion() As Integer
Dim arrVer As Variant
arrVer = Split(Outlook.Version, ".")
GetOutlookVersion = arrVer(0)
End Function

Function SMTPEX(olkMsg As Outlook.MailItem) As String
Dim olkPA As Outlook.propertyAccessor
On Error Resume Next
Set olkPA = olkMsg.propertyAccessor
SMTPEX = olkPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x5D01001E")
On Error GoTo 0
Set olkPA = Nothing
End Function

步骤 3:自定义 VBA 代码

  1. 请将上述代码中的“destination_folder_path”替换为实际文件路径,例如“C:\Users\DT 168\Documents\TEST”。
  2. 请将“your_email_account\folder\subfolder_1”和“your_email_account\folder\subfolder_2”替换为您的 Outlook 文件夹路径,例如“Kelly@extendoffice.com\Inbox\A”和“Kelly@extendoffice.com\Inbox\B”。
    doc-export-subfolders-to-excel-1

步骤 4:运行代码

按下“F5”键或点击“运行”按钮以执行代码。随后,在弹出的“将 Outlook 文件夹导出到 Excel”对话框中点击“确定”。现在,所有指定文件夹及其子文件夹中的邮件已成功导出到 Excel 工作表。
doc-export-subfolders-to-excel-3

劣势:

  • 复杂设置:需要具备 VBA 基础知识,并对代码进行细致调整。
  • 易出错:在定制过程中,细微错误也可能导致出错或导出不完整。
  • 耗时:不适合需要快速或频繁导出的场景。

轻松通过批量处理,革新您的邮件管理!

厌倦了重复的邮件操作?Kutools for Outlook 的“批量处理”工具,助您高效优化流程,节省宝贵时间。

  • 🌟 批量回复多封邮件: 使用模板即可轻松批量回复邮件,省时省力,操作无忧。
  • 📧 逐封转发: 可将多封邮件逐一以普通邮件形式转发,而不是作为附件发送。
  • 📝 多格式保存: 一键批量导出邮件为 PDF、Word、Excel 等多种格式,轻松高效!
Kutools for Outlook 批量处理功能

试用 Kutools for outlook 今日


使用 Kutools for Outlook 将某文件夹/子文件夹邮件导出到 Excel 👍

如需更加便捷省心的操作,Kutools for Outlook 提供了“将选中邮件以多种格式保存为文件”功能。凭借其简洁、快速和多样化的特点,此方法备受推荐。无论是处理少量邮件还是海量数据,Kutools 都能助您轻松高效完成任务,几乎无需额外操作。

告别 Outlook 低效!Kutools for Outlook 助您高效批量处理邮件——现已推出 30 天免费试用!立即下载 Kutools for Outlook!

步骤 1:选择文件夹或子文件夹

定位到包含需导出邮件的文件夹或子文件夹。按下 Ctrl+A,即可全选列表中的所有邮件。

步骤 2:进入多格式邮件保存功能

点击“Kutools”>“批量处理”>“将选中邮件以多种格式保存为文件”。

doc-export-subfolders-to-excel-4

步骤 3:配置导出设置

  1. 在“保存邮件为其他文件”对话框中,选择您想要保存文件的目标文件夹。
  2. 选择“Excel 格式”选项。
  3. 在“保存内容”区域,选择您希望导出的具体邮件内容(如标题、正文)。
    doc-export-subfolders-to-excel-5

步骤 4:完成导出

点击“确定”即可开始导出。导出完成后,您将在指定文件夹中看到所有邮件已分别保存为 Excel 文件。

doc-export-subfolders-to-excel-6

优势:

  • 快捷直观:只需几次点击,即可将邮件导出为 Excel,无需任何技术背景。
  • 输出自定义:可自由选择特定文件类型和内容,全面满足您的个性化需求。
  • 零错误流程:无需使用 VBA 方法,轻松规避复杂操作和潜在错误。
  • 专业效果:非常适合高效整理记录或分享数据。
注意: 若要使用 Kutools for Outlook 的“将选中邮件以多种格式保存为文件”功能,首先需要下载安装 Kutools for Outlook

最佳办公效率工具

体验全新 Kutools for Outlook,畅享 100+ 强大功能!立即点击下载,不容错过!

🤖KUTOOLS AI采用先进 AI 技术,轻松处理邮件,涵盖回复、摘要、优化、扩展、翻译及撰写等功能。

📧 邮件自动化自动答复(支持 POP 和 IMAP)/定时发送邮件/发送邮件时按规则自动抄送密送/自动转发(高级规则)/自动添加称呼/自动将多收件人邮件拆分为单独信息……

📨 邮件管理撤回邮件/按主题等条件拦截诈骗邮件/删除重复邮件/高级搜索/整合文件夹……

📁 附件增强批量保存/批量分离/批量压缩/自动保存/自动拆离/自动压缩……

🌟 界面魔法😊更多美观时尚表情/重要邮件到达时提醒您/最小化 Outlook 而不是直接关闭……

👍 一键精彩功能带附件全部答复/反钓鱼邮件/🕘显示发送者当前时间时区……

👩🏼‍🤝‍👩🏻 联系人与日历批量从选定邮件中提取添加联系人/将联系人组拆分为个人组/移除生日提醒……

在您的首选语言中畅享 Kutools —— 支持英语、西班牙语、德语、法语、中文等 40 多种语言!

一键解锁 Kutools for Outlook,告别等待,立即下载,让效率倍增!

kutools for outlook 功能1kutools for outlook 功能2

🚀 一键下载 — 即可获取全部 Office 加载项

强烈推荐:Kutools for Office(5 合 1)

一键下载五个安装包,即可同时获得 Kutools for Excel、Outlook、Word、PowerPointOffice Tab Pro立即点击下载!

  • 一键便捷:只需一次操作,即可下载全部五个安装包。
  • 🚀 轻松应对各类 Office 任务:随时按需安装所需插件,助您高效办公,不容错过!
  • 🧰 包含:Kutools for Excel / Kutools for Outlook / Kutools for Word / Office Tab Pro / Kutools for PowerPoint