如何使用 Outlook VBA 将传入电子邮件的信息自动导出到 Excel 文件

立即分享:

许多用户希望 Outlook 能够自动将收到的电子邮件的主要信息导出到 Excel 文件中。 本文将着眼于这一需求,并介绍一种通过 Outlook VBA 快速实现的方法。

有时,由于某些原因,例如邮件统计,您可能经常需要将邮件导出到 Excel 文件。 一般情况下,对于已有的已收到邮件,只需使用“导入导出”功能,即可一次性导出至Excel。 但是,您甚至可能希望 Outlook 可以在收到的电子邮件到达您的邮箱后立即自动将其导出到 Excel。 毫无疑问,Outlook 中没有这样的原生功能。 因此,您需要采用其他方法,例如第 3 方加载项或 Outlook VBA。 在这里,我们将教您如何使用 Outlook VBA 使其自动化。 继续阅读以获取步骤和相应的代码。

将传入电子邮件的信息自动导出到 Excel 文件

  1. 首先,您应该创建一个 Excel 文件。
  • 打开一个新的Excel文件。
  • 然后你应该输入“否”。 在A1单元格中,B1单元格中的“发件人姓名”,C1单元格中的“发件人电子邮件地址”,D1单元格中的“电子邮件主题”和E1单元格中的“接收时间”,如下图。创建一个 Excel 文件
  • 最后将其保存在您想要的名称和文件夹中。
  1. 之后,您应该启动 Outlook。
  2. 然后按“Alt + F11”键按钮,这将带您进入 VBA 编辑器。
  3. 接下来在弹出窗口中,您应该双击左侧的“ThisOutlookSession”。
  4. 随后,在“ThisOutlookSession”项目窗口中,您需要将以下VBA代码复制并粘贴到其中。
Public WithEvents objMails As Outlook.Items

Private Sub Application_Startup()
    Set objMails = Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub objMails_ItemAdd(ByVal Item As Object)
    Dim objMail As Outlook.MailItem
    Dim strExcelFile As String
    Dim objExcelApp As Excel.Application
    Dim objExcelWorkBook As Excel.Workbook
    Dim objExcelWorkSheet As Excel.Worksheet
    Dim nNextEmptyRow As Integer
    Dim strColumnB As String
    Dim strColumnC As String
    Dim strColumnD As String
    Dim strColumnE As String

    If Item.Class = olMail Then
       Set objMail = Item
    End If
 
    'Specify the Excel file which you want to auto export the email list
    'You can change it as per your case
    strExcelFile = "E:\Email\Email Statistics.xlsx"
 
    'Get Access to the Excel file
    On Error Resume Next
    Set objExcelApp = GetObject(, "Excel.Application")
    If Error <> 0 Then
       Set objExcelApp = CreateObject("Excel.Application")
    End If
    Set objExcelWorkBook = objExcelApp.Workbooks.Open(strExcelFile)
    Set objExcelWorkSheet = objExcelWorkBook.Sheets("Sheet1")
 
    'Get the next empty row in the Excel worksheet
    nNextEmptyRow = objExcelWorkSheet.Range("B" & objExcelWorkSheet.Rows.Count).End(xlUp).Row + 1
 
    'Specify the corresponding values in the different columns
    strColumnB = objMail.SenderName
    strColumnC = objMail.SenderEmailAddress
    strColumnD = objMail.Subject
    strColumnE = objMail.ReceivedTime
 
    'Add the vaules into the columns
    objExcelWorkSheet.Range("A" & nNextEmptyRow) = nNextEmptyRow - 1
    objExcelWorkSheet.Range("B" & nNextEmptyRow) = strColumnB
    objExcelWorkSheet.Range("C" & nNextEmptyRow) = strColumnC
    objExcelWorkSheet.Range("D" & nNextEmptyRow) = strColumnD
    objExcelWorkSheet.Range("E" & nNextEmptyRow) = strColumnE
 
    'Fit the columns from A to E
    objExcelWorkSheet.Columns("A:E").AutoFit
 
    'Save the changes and close the Excel file
    objExcelWorkBook.Close SaveChanges:=True
End Sub

VBA 代码 - 将传入电子邮件的信息自动导出到 Excel 文件

  1. 稍后您应该签署此代码。
  2. 然后,重启 Outlook 以激活新的 VBA 项目。
  3. 最终,从现在开始,所有收到的电子邮件一旦进入您的收件箱文件夹,就会自动导出到预设的 Excel 文件中。 excel 文件将如下图所示:包含传入电子邮件信息的 Excel 文件

避免痛苦的 PST 数据损坏

由于其各种功能,Outlook 赢得了很多荣誉。 但是,这并不意味着万无一失。 它仍然可以随时受到损害。 例如,如果您经常不当关闭 Outlook,您的 PST 数据很可能会面临危险。 在这种情况下,如果您想 修复PST 数据,您必须求助于经验丰富的工具,例如 DataNumen Outlook Repair.

作者简介:

Shirley Zhang 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 恢复 mdf 和 outlook 修复软件产品。 欲了解更多信息,请访问 datanumen.com

立即分享:

评论被关闭。