2011-06-01 72 views
0

这是我昨天发布的一个后续问题。我觉得我已经非常接近在VBA中创建一个模块,它将计算一周中某一天发送的电子邮件数量。目前选择的那一天是星期一。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 

回答

0

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

有一两件事让我吃惊:

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

应该比它看起来OK我其他

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

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

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

0

Outlook仅在参数为空时看到模块...与包含(可选dteDate As Date)相反。

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

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