[Outlook] 详细讲解如何自动保存收到邮件的附件

Eva

本文推荐给以下人群:

  • 想要自动保存收到的电子邮件的所有附件的人
  • 想要在 Outlook 中使用 VBA 的人
  • 正在考虑使用 Outlook 提高工作效率的人

在本文中,我们将以即使初学者也易于理解的方式解释如何使用宏将 Outlook 中收到的电子邮件附件自动保存到指定文件夹中。

如果您因为认为宏观很难而回避宏观,请不要担心。

我们将详细解释每个步骤,以便即使初学者也可以毫不犹豫地进行设置。我们将使用实际的屏幕截图来详细解释从如何显示 Outlook“开发人员”选项卡到创建和执行宏代码的所有内容,因此即使不熟悉计算机操作的人也可以放心地阅读。

Office 2019 的 Outlook 中对此屏幕进行了说明。

目录

首先,让我们配置 Outlook 以允许执行自行创建的宏。

Outlook 的默认设置是禁用除数字签名之外的所有宏,并且您自己创建的所有宏都将被忽略。
还有一种方法可以创建您自己的数字签名,所以如果您有兴趣,微软官方网站请看一下。
*由于设置比较复杂,这里不做解释。

点击左上角的【文件】选项卡

启动 Outlook 并单击左上角单击“文件”选项卡请。

启用所有宏 Step1 点击左上角的【文件】选项卡

点击【选项】

当您单击[文件]时,您将被重定向到以大字写着“帐户信息”的屏幕。

在其中单击选项请。

Outlook 窗口缩小时,可能不会显示[选项]。
如果看不到[选项],请尝试最大化 Outlook 窗口。

启用所有宏Step2 点击【选项】

点击【信任中心】

当您单击[选项]时,将弹出一个标有“Outlook 选项”的窗口。

在左侧点击【信任中心】请。

启用所有宏Step3 点击【信任中心】

点击【信任中心设置】

单击[信任中心]将带您进入包含“安全和详细信息”的屏幕。

在其中单击标有[信任中心设置]的按钮请。

启用所有宏Step4 点击【信任中心设置】

点击【宏设置】

单击标有[信任中心设置]的按钮以启动“信任中心”。

在该屏幕左侧的菜单中。点击【宏设置】请。

启用所有宏Step5 点击【宏设置】

勾选【启用所有宏】并点击【确定】

单击[宏设置],转到标有“宏设置”的屏幕。

在其中勾选【启用所有宏】请输入。

然后在右下角单击“确定”请。

启用所有宏 Step6 勾选【启用所有宏】,然后点击【确定】

再次单击“确定”返回到上一屏幕。

单击“宏设置”屏幕上的“确定”返回“Outlook 选项”窗口。

再次在右下角单击“确定”并关闭 Outlook 选项窗口。

阅读更多:Outlook(新) – 如何取消线程显示 | 3个简单步骤

现在您可以在 Outlook 中运行您自己的宏。

启用所有宏 Step7 返回上一屏幕,再次单击[确定]。

使用 Outlook 宏的准备工作第 2 部分:在功能区上显示开发人员选项卡

允许 Outlook 运行您自己的宏后,请按照以下步骤在 Outlook 功能区上显示“开发人员”选项卡。

  1. 右键单击 Outlook 屏幕顶部功能区(菜单)上的空白区域
  2. 从出现的菜单中单击“自定义功能区”
  3. 从右侧的“主选项卡”列表中检查“开发”。
  4. 单击“确定”以在功能区上显示“开发人员”选项卡。

有关如何在 Outlook 中显示“开发人员”选项卡的详细说明,请参阅以下页面。

相关文章

[Outlook] 如何打开开发者选项卡 |初学者也能轻松完成的 4 个简单步骤
使用实际屏幕以易于理解的方式解释显示 Outlook“开发人员”选项卡的最短步骤。另外,为什么“开发者”选项卡被隐藏了,显示后可以使用哪些功能?

什么是丝带?

Outlook中的“功能区”是指下面红框包围的区域。

展望功能区

Ribbon是微软提出的一种图形用户界面(GUI),用于显示应用软件的操作命令菜单。它首先安装在 Microsoft Office 2007 中。

维基百科 https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%9C%E3%83%B3_(GUI)

通过在 Outlook 功能区上显示“开发人员”选项卡,轻松管理宏。

如果您不希望开发人员选项卡出现在 Outlook 功能区上,请使用键盘快捷键Alt+F11您还可以使用 键打开 VBA 屏幕。

自动保存收到电子邮件的附件的宏

在 Outlook 中启用所有宏西方,显示“开发者”选项卡现在是时候创建宏了。

Option Explicit

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    
    Dim folderPath As String
    Dim entryIDs As Variant
    Dim recTime As String
    Dim attachFileName As String
    Dim i As Long
    
    Dim objMsg As Object
    Dim objAttach As Attachment
    
    folderPath = "C:UsersDownloads" '添付ファイルを保存するフォルダパスを指定、最後にを付けること
    
    entryIDs = Split(EntryIDCollection, ",") '複数のメールを同時受信した際は、複数のIDがカンマ区切りで渡されるため、カンマ区切りでIDを配列に格納
    
    For i = 0 To UBound(entryIDs)
        Set objMsg = Application.Session.GetItemFromID(entryIDs(i)) '受信したメールを取得
        recTime = Format(objMsg.ReceivedTime, "yyyymmdd-hhmm_") '受信日時を取得してタイトル用に文字列に変換
        
        For Each objAttach In objMsg.Attachments '受信メールに添付されたファイル毎に処理
            attachFileName = folderPath & recTime & objAttach.FileName 'フォルダパスを付けて添付ファイル名を用意
            objAttach.SaveAsFile attachFileName '添付ファイルを保存
        Next
    Next i
    
    Set objMsg = Nothing

End Sub

以上是VBA代码。

基本上,您可以按原样使用它,但您需要更改保存目标文件夹。

14号线文件夹路径 = “C:UsersDownloads”由于在 中指定了保存目的地,因此请将其更改为指定的文件夹。 (必需的)

您必须指定完整路径,例如“C:Usersjo-sysDesktopOutlook Attachments”。

如何检查文件夹的完整路径

要检查文件夹的完整路径,请按照以下步骤操作。

  • 右键单击您要指定的文件夹
  • 单击属性
  • 单击安全选项卡

完整路径写入[安全]选项卡上的对象名称中。

如何检查文件夹的完整路径

如果同一封电子邮件中有多个同名附件,它们将被覆盖。

一个宏,为每个收到的日期创建一个文件夹,并自动将收到的电子邮件附件保存在其中。

自动保存收到电子邮件的附件的宏在高级版本中,会在指定文件夹中自动为每个日期创建子文件夹,并将附加文件保存在其中。

如果您收到大量电子邮件或想要按日期管理附件,请尝试使用此功能。

Option Explicit

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    
    Dim folderPath As String        ' 添付ファイルを保存する親フォルダ(実際のユーザー名に修正)
    Dim entryIDs As Variant         ' 新規メールのIDを格納する配列
    Dim recTime As String           ' 受信日時(yyyymmdd-hhmm形式)を格納する変数
    Dim attachFileName As String    ' 保存する添付ファイルのフルパス名
    Dim i As Long                   ' ループ用カウンタ

    Dim objMsg As Object            ' 受信メールのオブジェクト
    Dim objAttach As Attachment     ' 添付ファイルを格納するオブジェクト

    Dim subfolder As String         ' 日付ごとのサブフォルダ名(yyyymmdd形式)
    Dim frag As String              ' サブフォルダの有無を確認するための変数
    
    folderPath = "C:UsersXXXXXDownloads" ' ★実際のユーザー名に修正してください(最後にをつけること)
    
    entryIDs = Split(EntryIDCollection, ",") ' 複数メールのIDを配列に格納
    
    For i = 0 To UBound(entryIDs)
        
        Set objMsg = Application.Session.GetItemFromID(entryIDs(i)) ' 受信したメールを取得
        recTime = Format(objMsg.ReceivedTime, "yyyymmdd-hhmm_")     ' メールの受信日時を取得(ファイル名に使用)
        
        subfolder = Format(objMsg.ReceivedTime, "yyyymmdd")         ' サブフォルダ名(日付)
        frag = Dir(folderPath & subfolder & "", vbDirectory)       ' サブフォルダの存在確認
        
        If frag = "" Then                                           ' サブフォルダがない場合に作成
            On Error Resume Next                                    ' 念のためエラー処理
            MkDir folderPath & subfolder                            ' サブフォルダ作成
            On Error GoTo 0
        End If
        
        For Each objAttach In objMsg.Attachments                    ' メールの添付ファイルを1つずつ処理
            attachFileName = folderPath & subfolder & "" & recTime & objAttach.FileName ' 保存するファイル名を用意(日時付き)
            On Error Resume Next                                    ' ファイル保存時のエラー回避処理
            objAttach.SaveAsFile attachFileName                     ' 添付ファイルを保存
            On Error GoTo 0
        Next
    
    Next i
    
    Set objMsg = Nothing                                            ' オブジェクトの解放(メモリ節約)

End Sub

以上是VBA代码。

基本上,您可以按原样使用它,但您需要更改保存目标文件夹。

文件夹路径 = “C:UsersXXXXXDownloads”由于在 中指定了保存目的地,因此请将其更改为指定的文件夹。 (必需的)

您必须指定完整路径,例如“C:Usersjo-sysDesktopOutlook Attachments”。

仅自动保存主题包含特定字符串的电子邮件附件的宏

我们收到一个请求,内容是“我只想保存主题中包含特定字符串的电子邮件的附件”,因此我添加了一个宏,可以自动仅保存主题中包含特定字符串的电子邮件的附件。

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    
    Dim folderPath As String
    Dim entryIDs As Variant
    Dim recTime As String
    Dim attachFileName As String
    Dim i As Long
    Dim keyword As String
    
    Dim objMsg As Object
    Dim objAttach As attachment
    
    folderPath = "C:UsersDownloads" ' 添付ファイルを保存するフォルダパスを指定、最後にを付けること
    keyword = "特定の文字列" ' チェックしたい特定の文字列を指定
    
    ' フォルダパスが存在するか確認
    If Dir(folderPath, vbDirectory) = "" Then
        MsgBox "指定したフォルダパスが存在しません: " & folderPath, vbExclamation
        Exit Sub
    End If
    
    On Error GoTo ErrorHandler ' エラーハンドリングを有効にする
    
    entryIDs = Split(EntryIDCollection, ",") ' 複数のメールを同時受信した際は、複数のIDがカンマ区切りで渡されるため、カンマ区切りでIDを配列に格納
    
    For i = 0 To UBound(entryIDs)
        Set objMsg = Application.Session.GetItemFromID(entryIDs(i)) ' 受信したメールを取得
        
        ' メールタイトルに特定の文字列が含まれているかチェック
        If InStr(objMsg.Subject, keyword) > 0 Then
            recTime = Format(objMsg.ReceivedTime, "yyyymmdd-hhmm_") ' 受信日時を取得してタイトル用に文字列に変換
            
            For Each objAttach In objMsg.Attachments ' 受信メールに添付されたファイル毎に処理
                attachFileName = folderPath & recTime & objAttach.FileName ' フォルダパスを付けて添付ファイル名を用意
                objAttach.SaveAsFile attachFileName ' 添付ファイルを保存
            Next objAttach
        End If
    Next i
    
Cleanup:
    On Error Resume Next
    Set objMsg = Nothing
    Set objAttach = Nothing
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description, vbCritical
    Resume Cleanup

End Sub

以上是VBA代码。

13号线文件夹路径 = “C:UsersDownloads”由于在 中指定了保存目的地,因此请将其更改为指定的文件夹。 (必需的)

您必须指定完整路径,例如“C:Usersjo-sysDesktopOutlook Attachments”。

14号线关键字=“特定字符串”指定电子邮件主题中包含的特定字符,因此请将其替换为指定的字符串。 (必需的)

在 Outlook 中保存宏以自动保存收到的电子邮件的附件

创建宏后,请按照以下步骤将宏保存到 Outlook。

单击“开发”选项卡

使用 Outlook 宏的准备工作第 2 部分:在功能区上显示开发人员选项卡显示为单击“开发”选项卡请。

如果Outlook中的功能区折叠起来难以操作,请参阅“【Outlook】如何始终显示功能区(菜单栏)|兼容桌面版和网页版”,切换为始终显示功能区。

保存宏以在 Outlook 中自动保存收到的电子邮件附件第 1 步单击 [开发者] 选项卡

单击[Visual Basic]

当您打开“开发人员”选项卡时,它位于最左侧。单击[Visual Basic]请。

保存宏,以便在 Outlook 中自动保存收到的电子邮件的附件 Step2 单击 [Visual Basic]

单击[此Outlook会话]

当您单击[Visual Basic]时,将显示如上所示的屏幕。

在左上框架中单击“此 Outlook 会话”请。

保存宏,以便在 Outlook 中自动保存收到的电子邮件的附件 Step3 单击 [ThisOutlookSession]

粘贴您创建的代码,然后单击左上角的[保存]

在 [ThisOutlookSession] 内粘贴宏以自动保存收到电子邮件的附件请。

粘贴后,它将位于左上角。点击【保存】请。

如果可以覆盖并保存点击右上角的✕并关闭宏屏幕。

保存宏,以便在 Outlook 中自动保存收到的电子邮件的附件 步骤 4 粘贴您创建的代码,然后单击左上方的[保存]

尝试运行宏来自动保存收到的电子邮件的附件

运行这个宏非常简单。

当您使用 Outlook 发送或接收带有附件的电子邮件时,附件将自动保存在指定的文件夹中。

例如,20221124-情シスの自由帳.pdf如果您在 Outlook 中收到带有附件的电子邮件,它将保存在指定的文件夹中。20221125-1113_20221124-情シスの自由帳.pdf文件将被保存。

保存的文件名开头的 20221125-1113_ 表示接收的日期和时间。
在本例中,这意味着它是在 2022 年 11 月 24 日 11:13 收到的。

有关如何在 Outlook 中自动保存收到电子邮件的附件的常见问题和解答

我们整理了一些有关如何自动保存 Outlook 中收到的电子邮件中的附件的常见问题和解答。

在 Outlook 中自动保存附件的最简单方法是什么?

自动保存在 Outlook 中收到的附件的最简单方法是使用宏。
设置宏后,附件将自动保存到指定文件夹中。
设置需要一些时间,但是一旦完成,文件管理将变得更加容易。

初学者也能设置宏吗?难吗?

即使是初学者也可以在 Outlook 中设置宏。
本文通过图像详细解释了这些步骤。
无需编程知识,因此请随意尝试设置。

我可以稍后更改附件的目标文件夹吗?

是的,您可以稍后更改保存附件的文件夹。
您可以通过在宏的 VBA 代码中重写文件夹路径(保存位置)来更改保存目的地。

自动保存附件的格式(类型)有限制吗?

不,基本上任何附件格式都可以自动保存(.xlsx、.docx、.pdf、.jpg、.zip 等)。

如果 Outlook 未运行,附件是否不会自动保存?

是的,如果 Outlook 未运行,宏将不起作用,因此附件不会自动保存。
Outlook 必须正在运行才能自动保存附件。

什么是宏?什么是VBA?即使对于初学者来说也能理解吗?

宏是 Outlook 中自动执行一系列操作的功能。
VBA(Visual Basic for Applications)是一种用于创建宏的编程语言。
使用 VBA,您可以自动化更复杂的过程,但您可以在不了解 VBA 的情况下设置本文中介绍的宏。

Outlook 宏可以在其他 Office 产品中使用吗?

是的,VBA 也可用于其他 Microsoft Office 产品,例如 Excel 和 Word。
通过学习 VBA,您可以简化跨 Office 产品的工作。

即使我设置了宏,附件也不会自动保存在 Outlook 中。

如果附件未自动保存,请检查 Outlook 是否正在运行、宏是否已启用、VBA 代码是否正确以及目标文件夹是否存在。

在 Outlook 中运行宏时出现错误。该怎么办?

如果运行宏时收到错误,则 VBA 代码中可能存在错误。
请检查错误消息并更正 VBA 代码。
您可以通过搜索错误信息找到解决方案。
如果您仍然不确定,请评论本文,我们将为您提供帮助。

Outlook 启动时宏不会自动运行

要让宏自动运行,您需要在“ThisOutlookSession”模块内编写 VBA 代码并使用“Application_Startup”事件过程。

我可以免费使用引入的 Outlook 自动文件附件保存宏吗?

是的,本文介绍的宏 VBA 代码是免费提供的。
请将其复制并粘贴到您的 Outlook 中。

Outlook 中是否支持宏设置?

关于文章的问题欢迎在评论区留言。

我在工作中使用 Outlook。设置宏可以吗?

如果您的公司使用 Outlook,请务必在配置宏之前咨询您公司的系统管理员。根据您的公司,宏的使用可能会因安全策略而受到限制。

其他 Outlook 文章

单击此处查看其他 Outlook 文章。请看一下。