如何计算每小时范围内的电子邮件?



我的团队使用 Outlook 来跟踪已完成的工作。所有工作都需要在收到后48小时内完成,我们需要严格跟踪。我已经设法将一个功能放在一起,可以计算超出 2 天范围的电子邮件,但曲目需要减少到一个小时。

无论我尝试多少配置,我都无法让我的代码在每小时范围内计数。这是我当前的代码的样子:

Dim OOSLAitms As Outlook.Items
Dim DateDiff As Long
Dim Filter As String
Dim i As Long
DateDiff = Now - 2
Filter = "[Received]  < '" & Day(DateDiff) & _
"/" & Month(DateDiff) & _
"/" & Year(DateDiff) & "'"
Set OOSLAitms = itms.Restrict("[FlagStatus] = 0")
Set OOSLAitms = OOSLAitms.Restrict(Filter)
For i = OOSLAitms.Count To 1 Step -1
Worksheets("Sheet1").Range("F4").Value = OOSLAitms.Count
Next

这设法计算日历日内收到的所有电子邮件,但不考虑一天中的几个小时。例如,如果我们在周日收到 300 个病例,它将计算所有病例直到午夜,而不是只计算到当前时间(例如下午 4 点(的病例。

如果可能的话,我需要帮助将小时/分钟标准合并到我的代码中,而不是日/月/年。

没有Received属性,必须改用ReceivedTime

如果您只需要获取每小时范围,则必须为搜索条件指定边界:

Dim searchCriteria As String = "[ReceivedTime]<=""" + dateTimeEnd + """ AND [ReceivedTime]>=""" + dateTimeStart + """"

好的,在玩了更多(以及大量的调试消息框(之后,我设法使用以下技巧使其工作:

  1. 在第一个工作表上创建了一个输出单元格"A11",运行格式化为"ddd dd/mm/yyyy hh:mm"的 =NOW(( 函数

  2. 在运行"Sheet1!A11 - 2' 公式。原因是出于某种原因,当通过 VBA 执行"Now - 2"时,即使格式化它总是午夜。通过单元格中的自动计算来做到这一点,可以将正确的推论缩短到一秒钟。

格式化"dd dd/mm/yyyy hh:mm"的原因是这是Outlook中"接收"列存储接收时间的格式。未在日期时间字符串前面提供"ddd"会导致自动化错误。

最终代码如下所示:

Dim OOSLAitms As Outlook.Items
Dim DateDiff As Long
Dim Filter As String
Dim Today As String
Today = Format(ThisWorkbook.Sheets("Sheet2").Range("A1"), "ddd dd/mm/yyyy hh:mm")
Filter = "[Received]" & "<" & Today
Set OOSLAitms = itms.Restrict("[FlagStatus] = 0")
Set OOSLAitms = OOSLAitms.Restrict(Filter)
Worksheets("Sheet1").Range("F4").Value = OOSLAitms.Count

最新更新