VBA计算电子邮件模块!

时间:2011-06-01 14:50:24

标签: vba outlook outlook-2003

这是我昨天发布的一个后续问题。我觉得我已经非常接近在VBA中创建一个模块,该模块将计算在一周中特定日期发送的电子邮件数量。目前选择的那一天是星期一。

但是,代码尚未运行,Outlook拒绝查看特定模块 我确信它有一些错误。如果有人能指出这些,我会非常感激 我也认为这样的代码可能对其他人有用,以备将来参考,因为这种模块的代码似乎没有在互联网上随时可用(我看过!)然后形成一种搜索参数,许多人会找到有用的!

Sub Count2(Optional dteDate As Date)
  Dim objOutlook As Object, objnSpace As Object, objFolder As Object
  Dim EmailCount As Integer    
  Set objOutlook = CreateObject("Outlook.Application")
  Set objnSpace = objOutlook.GetNamespace("MAPI")

  On Error Resume Next

  Set objFolder = objnSpace.Folders("My Personal Emails").Folders("spam")
  If Err.Number <> 0 Then 
    Err.Clear
    MsgBox "No such folder."
    Exit Sub
  End If

  Select Case Weekday(dteDate)
    Case vbMonday
      dteDate = Date
    End Select

  For Each MapiItem In MapiFolderInbox.Messages
    If MapiItem.TimeReceived = Date Then
      Count = Count + 1
      Next MapiItem   
    End If

  EmailCount = objFolder.Items.Count
  Set objFolder = Nothing
  Set objnSpace = Nothing
  Set objOutlook = Nothing

  MsgBox "Number of emails in the folder: " _
    & EmailCount, , "Number of spam messages sent on a Monday: " & Count        
End Sub

3 个答案:

答案 0 :(得分:0)

虽然调试会丢弃on error resume next 它隐藏了错误。如果必须,你可以稍后再把它放回去 忽略错误并不是一个好主意,更好地明确地处理错误。

有一件事让我感到震惊:

For Each MapiItem In MapiFolderInbox.Messages
    If MapiItem.TimeReceived = Date Then
      Count = Count + 1
      Next MapiItem   
    End If

应该是

For Each MapiItem In MapiFolderInbox.Messages
  If MapiItem.TimeReceived = Date Then
    Count = Count + 1
  End If
Next MapiItem   

除此之外我觉得还不错。

答案 1 :(得分:0)

我认为收到的时间更像是一个时间戳,除了日期之外它还有时间。你应该像这样使用它;

For Each MapiItem In MapiFolderInbox.Messages   
    If  MapiItem.TimeReceived > YTS And MapiItem.TimeReceived < TTS Then
        Count = Count + 1   
    End If 
Next MapiItem

其中YTS和TTS是时间戳,它具有昨天的时间戳和今天的时间戳

例如01:06:2011:23:59:00和02:06:2011:23:59:00

你应该通过调试你的代码来确认这一点。希望这有帮助。

答案 2 :(得分:0)

Outlook仅在参数为空时才会看到模块...而不是包含(可选dteDate为日期)。

除此之外,按照Johan的建议,模块运行,但只有Count = 1.也就是说,无论输入如何,周一收到的电子邮件结果始终为1。

我也尝试了adbanginwar的建议,但在这种情况下会显示'Expected:Then or GoTo'的编译错误。