如何在 Outlook 中按月快速统计已发送邮件

立即分享:

如果您将已发送的电子邮件存储在多个文件夹中,现在想按月统计所有这些已发送的邮件,您可以阅读这篇文章。 在这里我们将介绍一种相当快速的获取方式。

上一篇文章——《如何通过 Outlook VBA 按日期、月份或年份快速计算收到的电子邮件”分享了一种按月计算电子邮件数量的方法。 但是,它能够处理一个文件夹中的电子邮件。 如果你想统计几个甚至所有邮件文件夹中的邮件,你应该使用其他方法。 因此,接下来,我们将向您展示另一种更快捷的方法。

按月统计已发送邮件

  1. 首先,通过“Alt + F11”访问 Outlook VBA 编辑器。
  2. 然后,根据“启用对“MS Excel 对象库”的引用如何在 VBA 中添加对象库引用“。
  3. 之后,将以下 VBA 代码放入项目或模块中。
Dim objDictionary As Object

Sub CountSentMailsByMonth()
    Dim objOutlookFile As Outlook.Folder
    Dim objFolder As Outlook.Folder
    Dim objExcelApp As Excel.Application
    Dim objExcelWorkbook As Excel.Workbook
    Dim objExcelWorksheet As Excel.Worksheet
    Dim varMonths As Variant
    Dim varItemCounts As Variant
    Dim nLastRow As Integer
 
    Set objDictionary = CreateObject("Scripting.Dictionary")
    Set objInbox = Outlook.Application.Session.GetDefaultFolder(olFolderInbox)
 
    'Get the default Outlook data file
    Set objOutlookFile = Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Parent
 
    For Each objFolder In objOutlookFile.Folders
        If objFolder.DefaultItemType = olMailItem Then
           Call ProcessFolders(objFolder)
        End If
    Next

    Set objExcelApp = CreateObject("Excel.Application")
    objExcelApp.Visible = True
    Set objExcelWorkbook = objExcelApp.Workbooks.Add
    Set objExcelWorksheet = objExcelWorkbook.Sheets(1)
 
    With objExcelWorksheet
        .Cells(1, 1) = "Month"
        .Cells(1, 2) = "Count"
    End With
 
    varMonths = objDictionary.Keys
    varItemCounts = objDictionary.Items
 
    For i = LBound(varMonths) To UBound(varMonths)
        nLastRow = objExcelWorksheet.Range("A" & objExcelWorksheet.Rows.Count).End(xlUp).Row + 1
        With objExcelWorksheet
            .Cells(nLastRow, 1) = varMonths(i)
            .Cells(nLastRow, 2) = varItemCounts(i)
        End With
    Next
 
    objExcelWorksheet.Columns("A:B").AutoFit
End Sub

Sub ProcessFolders(ByVal objCurFolder As Outlook.Folder)
    Dim i As Long
    Dim objMail As Outlook.MailItem
    Dim strMonth As String
 
    For i = objCurFolder.Items.Count To 1 Step -1
        If objCurFolder.Items(i).Class = olMail Then
           Set objMail = objCurFolder.Items(i)
           'Change to your own email address
           If objMail.SenderEmailAddress = "you@datanumen.com" Then
              strMonth = Format(Year(objMail.SentOn) & "-" & Month(objMail.SentOn), "YYYY/MM")
 
              If objDictionary.Exists(strMonth) Then
                 objDictionary(strMonth) = objDictionary(strMonth) + 1
              Else
                 objDictionary.Add strMonth, 1
              End If
           End If
       End If
    Next
End Sub

VBA 代码 - 按月统计发送的电子邮件

  1. 接下来,将光标移动到第一个子程序。
  2. 随后,按“F5”来触发这个宏。
  3. 马上会出现一个Excel文件,里面有每个月发送邮件的数量,如下图所示。Excel 中的计数

面对 Outlook 损坏不要惊慌

遇到 PST 损坏时,您可能会担心。 然而,实际上,你最好尽快冷静下来。 众所周知,恐慌是无奈的,甚至会导致更加混乱和严重的问题。 您应该保持冷静考虑措施,例如考虑是否更新了备份并考虑如何 修复PST – 是否求助于第三方工具,如 DataNumen Outlook Repair 或联系相关专业人士。

作者简介:

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

立即分享:

评论被关闭。