在Outlook中使用VBA收集有关已接收电子邮件的统计信息

时间:2013-05-06 17:45:14

标签: vba outlook inbox

在工作中,我们使用共享的Outlook邮箱接收来自我们用户的电子邮件,目前我们轮流监控邮箱和回复等。我们的工作时间是自我们开始以来的上午7点至下午5点电子邮件地址。

在接下来的两个月内,我们将在几个小时内改变,我们(或者我应该说,仅限我自己)将在晚上11点之前监控邮箱。

我想要做的是收集我们收到的电子邮件的一些统计数据,以便从业务视图中查看是否值得,以便在跟踪之后保持稍后的转变。

我想要做的是使用一些VBA检查收件箱中的电子邮件,然后将数据分解为一些统计数据以供管理,例如:

Monday 06/05/12: 
49 emails received, 34 were replies, 15 were new
At 7am received: 0 emails
At 8am received: 1 emails
------
At 11pm received: 0 emails

如果电子邮件是原件或回复,我认为最容易看出主题是否以RE开头? (我知道这不是万无一失的,但我认为这对基本统计数据有效)

以前有人做过这样的事吗?这样做有简单/正确的方法吗?

任何人都有任何有用的提示/代码示例吗?

3 个答案:

答案 0 :(得分:2)

你可以从这样的事情开始

Sub EmailStats()

    Dim olMail As MailItem
    Dim aOutput() As Variant
    Dim lCnt As Long
    Dim xlApp As Excel.Application
    Dim xlSh As Excel.Worksheet
    Dim flInbox As Folder

    Set flInbox = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)

    ReDim aOutput(1 To flInbox.Items.Count, 1 To 4)

    For Each olMail In flInbox.Items
        If TypeName(olMail) = "MailItem" Then
            lCnt = lCnt + 1
            aOutput(lCnt, 1) = olMail.SenderEmailAddress 'maybe stats on domain
            aOutput(lCnt, 2) = olMail.ReceivedTime 'stats on when received
            aOutput(lCnt, 3) = olMail.ConversationTopic 'group based on subject w/o regard to prefix
            aOutput(lCnt, 4) = olMail.Subject 'to split out prefix
        End If
    Next olMail

    Set xlApp = New Excel.Application
    Set xlSh = xlApp.Workbooks.Add.Sheets(1)

    xlSh.Range("A1").Resize(UBound(aOutput, 1), UBound(aOutput, 2)).Value = aOutput
    xlApp.Visible = True

End Sub

如果要添加更多数据,只需更改Redim语句以容纳更多列,并将其添加到If块中。一旦进入Excel(或者可能是Access或SQLServer,如果有大量数据),你可以添加一些计算,比如

=IF(LEFT(@Subject,3)="RE:","Reply",IF(LEFT(@Subject,3)="FW:","Forward","Original"))

然后疯狂地转动。

您需要引用Excel对象库才能使上述代码生效。

答案 1 :(得分:1)

我会后退一步,使用邮件服务器中的日志文件来回答这个问题。

每天一次,您只需提取邮箱收到的所有电子邮件的报告即可。如果您个人无权访问它们,那么您的邮件管理员应该。

答案 2 :(得分:0)

有一个名为OutlookStatView的漂亮工具,由NirSoft的优秀人员制作。

截图示例:

tabular statistics of outlook email

如果您不太热衷于使用VBA,请尝试使用相同的高级过滤选项,使用它可以选择特定文件夹,并启动日期时间和结束日期时间进行监控。

注意:这不是实时或自动的,它是一种演示可能性的手动方式。

邮箱扫描选项: mailbox scan options

在Windows 2000 / XP / Vista / 2003/2008/7/8/10上运行。

支持任何版本的Microsoft Outlook,包括Outlook 2016。

我正在寻找Mac& Linux替代品。

此答案与https://superuser.com/a/1226613/249975

类似但不相同