跳至主要内容

如何在不打开Outlook中的邮件的情况下保存附件?

Author: Siluvia Last Modified: 2025-05-07

您可能经常需要将收到的电子邮件中的附件保存到计算机磁盘中。从一封电子邮件中保存一个或所有附件很容易,但如何一次性从多封电子邮件中保存附件呢?通常情况下,您需要反复打开电子邮件并保存附件。有什么技巧可以摆脱这种重复操作吗?本教程中的方法可以帮助您。

使用VBA代码在不打开邮件的情况下保存一个或多个电子邮件中的附件
使用一款出色的工具在不打开邮件的情况下保存一个或多个电子邮件中的附件


使用VBA代码在不打开邮件的情况下保存一个或多个电子邮件中的附件

以下VBA代码可以帮助您同时从一封或多封电子邮件中保存附件,而无需在Outlook中打开这些邮件。请按照以下步骤操作:

1. 选择要保存附件的一封或多封电子邮件,按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口。

2. 展开 Microsoft Outlook Objects 文件夹,双击 ThisOutlookSession 打开代码窗口,然后将以下 VBA 代码复制到其中。

save attachments with VBA 1

VBA代码:在不打开邮件的情况下保存附件

Public Sub SaveAttachmentsWithoutOpening()
'Updated by Extendoffice 20191008
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xAttachment As Outlook.Attachment
Dim i As Long
Dim xCount As Long
Dim xFileName As String
Dim xSavePath As String
Dim xOriginalFiles As String
On Error Resume Next
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.BrowseForFolder(0, "Select a folder:", 0, strStartingFolder)
If Not TypeName(xFolder) = "Nothing" Then
    Set xFolderItem = xFolder.self
    xSavePath = xFolderItem.Path & "\"
Else
    xFileName = ""
    Exit Sub
End If
For Each xMailItem In Outlook.ActiveExplorer.Selection
    Set xAttachments = xMailItem.Attachments
    xCount = xAttachments.Count
    xOriginalFiles = ""
    If xCount > 0 Then
        For i = xCount To 1 Step -1
            Set xAttachment = xAttachments.Item(i)
            If IsEmbeddedAttachment(xAttachment) = False Then
                xFileName = xSavePath & xAttachment.FileName
                xAttachment.SaveAsFile xFileName
                xAttachment.Delete
                If xMailItem.BodyFormat <> olFormatHTML Then
                    xOriginalFiles = xOriginalFiles & vbCrLf & "file://" & xFileName
                Else
                    xOriginalFiles = xOriginalFiles & "<br>" & "<a href='file://" & xFileName & "'>" & xFileName & "</a>"
                End If
            End If
        Next i
        If xMailItem.BodyFormat <> olFormatHTML Then
            xMailItem.Body = "The file(s) were saved to " & xOriginalFiles & vbCrLf & vbCrLf & xMailItem.Body
        Else
            xMailItem.HTMLBody = "<p>" & "The file(s) were saved to " & xOriginalFiles & "</p>" & xMailItem.HTMLBody
        End If
        xMailItem.Save
    End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
End Sub

Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
    xHtml = xItem.HTMLBody
    xID = "cid:" & xCid
    If InStr(xHtml, xID) > 0 Then
        IsEmbeddedAttachment = True
    End If
End If
End Function

4. 按 F5 键运行代码。然后会弹出一个 BrowseForFolder 窗口,请选择一个文件夹来保存附件,然后单击“确定”按钮。

接着,所选电子邮件中的所有附件都会立即保存到选定的文件夹中。

注意:所有附件都将从电子邮件中分离,并在邮件正文中保留相应的保存路径链接。

save attachments with VBA 2

使用一款出色的工具在不打开邮件的情况下保存一个或多个电子邮件中的附件

如果您是VBA新手,本节中的方法将是您的不错选择。

在此推荐 Kutools for Outlook Save All attachments 工具给您。如果您只想保存附件而不将其从所选电子邮件中分离,Save All attachments 功能可以帮助您轻松完成。请按照以下步骤操作。在应用 Kutools for Outlook 之前,请先下载并安装它

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

1. 选择包含要保存附件的电子邮件,点击 Kutools Plus > Attachment Tools > Save All

2. 在“保存设置”对话框中,您需要:

  • 2.1) 在“保存附件到此文件夹”部分,选择一个文件夹来保存附件;
  • 2.2) “以下样式保存附件”框是可选的,您可以创建具有特定样式的子文件夹以保存附件,或者使用特定样式重命名已保存的附件。
  • 2.3) 单击“确定”开始保存所选电子邮件中的所有附件。

提示:通过上述配置,所有附件都将保存到指定文件夹中。如果您只想保存某些特定附件,例如仅保存文件名中包含特定单词“invoice”的PDF文件,您可以如下配置过滤条件。

  • 单击“高级选项”按钮以展开过滤条件
  • 根据您的需求指定条件。提示:在这里我勾选了“附件名称包含”框,然后在文本框中输入“invoice”,接着勾选“附件类型”框,在文本框中输入“.pdf”。
save attachments with kutools 2

3. 在下一个弹出的对话框中,单击“”继续。

接着,所选电子邮件中的附件会立即保存到指定文件夹中。

提示:对于从所选电子邮件中分离附件并在邮件正文中仅留下附件超链接的情况, Detach All attachments 功能可以提供帮助。


相关文章

自动从Outlook下载/保存附件到特定文件夹 一般来说,您可以通过单击Outlook中的“附件 > 保存所有附件”来保存一封电子邮件的所有附件。但是,如果您需要保存所有收到和接收的电子邮件中的所有附件,有什么好办法吗?本文将介绍两种自动从Outlook下载附件到特定文件夹的解决方案。

在Outlook回复时保留附件 当我们在Microsoft Outlook中转发电子邮件时,原始附件会保留在转发的邮件中。然而,当我们回复电子邮件时,原始附件不会附加在新的回复邮件中。这里我们将介绍一些在Microsoft Outlook回复时保留原始附件的小技巧。

在Outlook中搜索附件(内容)内的单词 当我们在Outlook的即时搜索框中输入关键字时,它会在电子邮件的主题、正文、附件等中搜索该关键字。但现在我只需要在Outlook中搜索附件内容中的关键字,有什么办法吗?本文将向您展示在Outlook中轻松搜索附件内容内单词的详细步骤。