[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 中運行您自己的宏。

啟用所有宏 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 必須正在運行才能自動保存附件。

另請閱讀:Outlook(新) – 如何取消線程顯示 | 3個簡單步驟

什麼是宏?什麼是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 文章。請看一下。