跳至主要内容

如何在Outlook中将两个文件夹无重复地合并到一个文件夹?

Author: Sun Last Modified: 2025-05-07

在Outlook中,您可能拥有许多带有多个文件夹的邮件账户,在某些情况下,您希望将两个文件夹合并为一个,并删除重复的项目。如何快速完成这项任务呢?本文中,我将介绍一种VBA代码,帮助您尽可能快地在Outlook中处理它。

通过VBA代码无重复地合并两个文件夹

使用Kutools for Outlook合并多个文件夹并删除重复项


通过VBA代码无重复地合并两个文件夹

要将两个文件夹合并为一个并删除重复的项目,您可以按照以下步骤使用VBA代码来处理:

1. 按“Alt + F11”键打开“Microsoft Visual Basic for Applications”窗口。

2. 在左侧窗格中双击“Project1”下的“ThisOutlookSession”,然后将以下代码复制并粘贴到右侧的脚本窗口中。

VBA:无重复地合并两个文件夹

Sub MergeOutlookFolders_WithoutDuplicates()
'UpdatebyExtendoffice20180521
Dim xSourceFolder As Outlook.Folder
Dim xTargetFolder As Outlook.Folder
Dim xCount, i As Long
Dim xItem As Object
Dim xSourceItem As Object
Dim xTargetItem As Object
Dim xDictionary As Scripting.Dictionary  'Object
Dim xStr As String
On Error Resume Next
Set xDictionary = New Scripting.Dictionary
Set xSourceFolder = Application.Session.PickFolder
Set xTargetFolder = Application.Session.PickFolder
xCount = 0
If xSourceFolder.DefaultItemType <> xTargetFolder.DefaultItemType Then
    MsgBox "Error: The two folders are not in same type!", vbExclamation + vbOKOnly, "Kutools for Outlook"
    Exit Sub
End If
For i = xSourceFolder.Items.Count To 1 Step -1
    Set xSourceItem = xSourceFolder.Items.Item(i)
    xSourceItem.Move xTargetFolder
Next
For i = xTargetFolder.Items.Count To 1 Step -1
    Set xTargetItem = xTargetFolder.Items.Item(i)
    Select Case xTargetItem.Class
        Case olMail
            With xTargetItem
                xStr = .Subject & .Body & .SentOn
            End With
        Case olAppointment
            With xTargetItem
                xStr = .Subject & .Start & .Duration & .Location & .Body
            End With
        Case olContact
            With xTargetItem
                xStr = .FullName & .Email1Address & .Email2Address & .Email3Address
            End With
        Case olTask
            With xTargetItem
                xStr = .Subject & .StartDate & .DueDate & .Body
            End With
    End Select
    If xDictionary.Exists(xStr) = True Then
        xTargetItem.Delete
        xCount = xCount + 1
    Else
        xDictionary.Add xStr, True
    End If
Next i
If xCount <> 0 Then
    MsgBox xCount & " duplicates removed when merging!", vbInformation + vbOKOnly, "Kutools for Outlook"
End If
End Sub

doc merge folders without duplicates 1

3. 点击“工具”>“引用”,在弹出的对话框中勾选“Microsoft Scripting Runtime”复选框。

doc merge folders without duplicates 2 doc arrow right doc merge folders without duplicates 3

4. 点击“确定”。现在按“F5”键运行代码。会弹出一个对话框,提醒您选择要合并的第一个文件夹(注意:第一个文件夹中的所有项目在与第二个文件夹合并后将被移除)。
doc merge folders without duplicates 4

5. 点击“确定”。在第二个弹出的对话框中,选择要比较并合并的第二个文件夹。
doc merge folders without duplicates 5

6. 点击“确定”。现在,第一个文件夹中的所有项目都将移动到第二个文件夹,并且重复的项目将被删除。
doc merge folders without duplicates 6


使用Kutools for Outlook合并多个文件夹并删除重复项

如果您不熟悉VBA代码,可以尝试使用“Kutools for Outlook”,这是一款方便的插件,其“整合文件夹”和“重复邮件”功能可以轻松快速地处理此任务。

使用Kutools for Outlook解锁无与伦比的邮件处理效率!永久免费获取 70 项强大功能。立即下载免费版本

合并多个文件夹

1. 点击“Kutools Plus”>“整合文件夹”,然后在“整合多个文件夹到一个文件夹”的对话框中,点击“添加”以将要合并的文件夹添加到列表中,并选择一个文件夹作为目标文件夹。
doc consolidate and remove duplicate 1

2. 点击“确定”>“确定”。现在,所选文件夹中的所有项目都已合并到指定的文件夹中。
doc consolidate and remove duplicate 2

删除重复项

3. 点击“Kutools”>“删除重复”>“重复邮件”。然后在“重复邮件”对话框中,勾选要去除重复项的文件夹。
doc consolidate and remove duplicate 3

4. 点击“下一步”。在“重复邮件设置”对话框中,指定用于比较邮件的标准。然后勾选“删除重复邮件”选项,并选择“单个文件夹内对比”。
doc consolidate and remove duplicate 4

5. 点击“下一步”>“下一步”,重复的邮件将被筛选出来。点击“删除重复邮件”按钮>“确定”以成功删除重复的邮件。
doc consolidate and remove duplicate 5 doc merge folders without duplicates 6