在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对象库的引用才能使上述代码正常工作。
我想退一步,使用邮件服务器的日志文件来回答这个问题。
每天一次,您可以简单地拉取邮箱收到的所有电子邮件的报告。如果你没有亲自访问他们,那么你的邮件管理员应该。
可悲的是我们的Exchange服务器外包,这是不可能从他们请求任何日志:( – 2013-05-06 19:22:44
这个漂亮的工具叫做OutlookStatView,由NirSoft的杰出工作人员制作。
截图样本:
,如果你不使用VBA如此热衷,请尝试使用可用于相同的高级过滤选项,使用它,你可以选择特定的文件夹,并开始datetime和为您的监测结束日期时间。
注意:这不是实时的或自动的,它是所有手动方式来演示的可能性。
邮箱扫描选项:在Windows 2000/XP/Vista中/ 2003/2008/7/8/10
上运行。
支持任何版本的Microsoft Outlook,包括Outlook 2016
我要找的Mac & Linux的替代品。
这个答案是相似但不相同https://superuser.com/a/1226613/249975
谢谢,这工作:)只需要找到一个细微的变化这样任何来自内部人员的电子邮件都会显示为他们的电子邮件地址,而不是他们的AD的完整地址OU =等。 – 2013-05-09 17:40:21
这应该更容易。它是'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