Skip to main content

如何自動將Outlook郵件保存到硬碟/磁碟?

Author: Kelly Last Modified: 2025-05-12

為了備份、工作證據或其他目的,您可能希望將Outlook郵件保存到硬碟。手動從Outlook拖曳幾封郵件到磁碟上保存是很容易的。但是,您知道如何自動將每封收到的郵件保存到磁碟嗎?本文將介紹一種在Outlook中處理此問題的VBA方法。

自動將Outlook郵件保存到硬碟/磁碟


自動將Outlook郵件保存到硬碟/磁碟

此方法將介紹一種VBA,用於自動將Outlook中的每封收到的郵件作為單獨的HTML文件保存到指定的磁碟。請按照以下步驟操作:

1. 按下「Alt」+「F11」鍵以打開Microsoft Visual Basic for Applications窗口。

2. 展開Project1,並雙擊「ThisOutlookSession」以打開它,然後將以下VBA代碼粘貼到ThisOutlookSession窗口中。參見截圖:

VBA:自動將Outlook郵件保存為HTML文件到磁碟

Private WithEvents InboxItems As Outlook.Items
Sub Application_Startup()
    Dim xNameSpace As Outlook.NameSpace
    Set xNameSpace = Outlook.Application.Session
    Set InboxItems = xNameSpace.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub InboxItems_ItemAdd(ByVal objItem As Object)
    Dim FSO
    Dim xMailItem As Outlook.MailItem
    Dim xFilePath As String
    Dim xRegEx
    Dim xFileName As String
    On Error Resume Next
    xFilePath = CreateObject("WScript.Shell").SpecialFolders(16)
    xFilePath = xFilePath & "\MyEmails"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    If FSO.FolderExists(xFilePath) = False Then
        FSO.CreateFolder (xFilePath)
    End If
    Set xRegEx = CreateObject("vbscript.regexp")
    xRegEx.Global = True
    xRegEx.IgnoreCase = False
    xRegEx.Pattern = "\||\/|\<|\>|""|:|\*|\\|\?"
    If objItem.Class = olMail Then
        Set xMailItem = objItem
        xFileName = xRegEx.Replace(xMailItem.Subject, "")
        xMailItem.SaveAs xFilePath & "\" & xFileName & ".html", olHTML
    End If
    Exit Sub
End Sub

3. 保存VBA代碼,並重新啟動您的Microsoft Outlook。

從現在開始,每封收到的郵件都將作為單獨的HTML文件保存到“MyEmails”文件夾中。

注意
(1) 此VBA將在Documents文件夾下創建一個名為“MyEmails”的文件夾。您可以通過此文件路徑找到自動保存的郵件:C:\Users\your_user_name\Documents\MyEmails
(2) 此VBA將適用於預設郵箱帳戶收件匣文件夾中收到的郵件。


相關文章

如何在Outlook中批量/選擇性導出郵件到Excel/文本/PST文件?