在Outlook中使用VBA收集收到的电子邮件的统计信息

问题描述:

在工作中,我们使用共享的Outlook邮箱接收来自用户的电子邮件,目前我们有轮到谁来监控邮箱和回复等。自我们开通电子邮件地址以来,工作时间已经是上午7点至下午5点。在Outlook中使用VBA收集收到的电子邮件的统计信息

在接下来的2个月里,我们(或者我应该说,只有我自己)会监控邮箱,直到晚上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开头:? (我知道这不是万无一失,但我认为它可以用于基本统计)

有没有人做过类似的事情?有没有一种简单/正确的方法来做到这一点?

任何人有任何提示/代码示例,将是有用的?

如果你想添加更多的数据,只是改变了Redim声明,以适应更多的列和IF模块添加它们你可以用一些这样开始

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 

。一旦在Excel(或者Access或SQLServer的,如果这是一个很大的数据),你可以添加一些计算,像

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

然后转动像疯了似的。

您需要对Excel对象库的引用才能使上述代码正常工作。

+0

谢谢,这工作:)只需要找到一个细微的变化这样任何来自内部人员的电子邮件都会显示为他们的电子邮件地址,而不是他们的AD的完整地址OU =等。 – 2013-05-09 17:40:21

+1

这应该更容易。它是'Application.GetNamespace(“MAPI”)。CreateRecipient(olMail.SenderEmailAddress).AddressEntry.GetExchangeUser.PrimarySmtpAddress' from http://forums.codeguru.com/showthread.php?441008-Extract-sender-s-email-address - 从安交换电子邮件 – 2013-05-10 12:56:50

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

每天一次,您可以简单地拉取邮箱收到的所有电子邮件的报告。如果你没有亲自访问他们,那么你的邮件管理员应该。

+0

可悲的是我们的Exchange服务器外包,这是不可能从他们请求任何日志:( – 2013-05-06 19:22:44

这个漂亮的工具叫做OutlookStatView,由NirSoft的杰出工作人员制作。

截图样本:

tabular statistics of outlook email

,如果你不使用VBA如此热衷,请尝试使用可用于相同的高级过滤选项,使用它,你可以选择特定的文件夹,并开始datetime和为您的监测结束日期时间。

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

邮箱扫描选项:在Windows 2000/XP/Vista中/ 2003/2008/7/8/10 mailbox scan options

上运行。

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

我要找的Mac & Linux的替代品。

这个答案是相似但不相同https://superuser.com/a/1226613/249975