2011-06-01 69 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'的編譯錯誤。

相關問題