2014-01-08 62 views
0

我想運行一個vba應用程序來查找此郵箱中的電子郵件,並給我從過去三天的每個日期的總數。該文件夾是正確的,我可以看到下一個mailitem。我遇到的主要問題是我希望每個都在到達第四天後結束。我在foreach和嵌套的if語句結束時收到了編譯錯誤。我是否需要在任何地方有下一個?vba每個循環與多個如果

Sub NonTicketEmailsCount() 

Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder 
Dim EmailCount As Integer 
Dim MailItem 
Set objOutlook = CreateObject("Outlook.Application") 
Set objnSpace = objOutlook.GetNamespace("MAPI") 

On Error Resume Next 
Set objFolder = objnSpace.Folders("Mailbox - IT Support Center").Folders("Non ticket related emails") 
If Err.Number <> 0 Then 
Err.Clear 
MsgBox "No such folder." 
Exit Sub 
End If 

EmailCount = objFolder.Items.Count 

Dim dateStr As String 
Dim dict As Object 
Dim msg As String 
Set dict = CreateObject("Scripting.Dictionary") 
' Determine date of each message: 
For Each MailItem In objFolder.Items 
    rt = MailItem.ReceivedTime 'getting received time for each mailitem 
    nrt = Format(rt, "M/ d/ yyyy") 'formatting the received time to match value of datevalue keyword 
    If DateValue(nrt) = Empty Then 
     NonTicket0 = NonTicket0 + 1 
    ElseIf DateValue(Date - 1) = DateValue(nrt) Then 
     NonTicket1 = NonTicket1 + 1 
    ElseIf DateValue(Date - 2) = DateValue(nrt) Then 
     NonTicket2 = NonTicket2 + 1 
    ElseIf DateValue(Date - 3) = DateValue(nrt) Then 
     NonTicket3 = NonTicket3 + 1 
    ElseIf DateValue(Date - 4) = DateValue(nrt) Then 
     Exit For 

    End If 

msg = "Total NonTicket emails in the folder: " & EmailCount & vbNewLine _ 
& NonTicket1 & " = NonTicket Emails on " & Date - 1 & vbNewLine _ 
& NonTicket2 & " = NonTicket Emails on " & Date - 2 & vbNewLine _ 
& NonTicket3 & " = NonTicket Emails on " & Date - 3 & vbNewLine _ 

MsgBox "Number of emails in the folder: " & EmailCount & vbNewLine _ 
& "NonTicket Emails Yesterday: " & NonTicket1 & vbNewLine _ 
& "NonTicket Emails Yesterday: " & NonTicket2 & vbNewLine _ 
& "NonTicket Emails Yesterday: " & NonTicket3 


'Send Mail 
Set OutApp = CreateObject("outlook.Application") 
Set OutMail = OutApp.CreateItem(o) 
With OutMail 
.Subject = "Non Ticket Emails" 
.To = "[email protected]; [email protected]" 
.Body = msg 
.Display 
End With 

Set OutMail = Nothing 
Set OutApp = Nothing 
Set objFolder = Nothing 
Set objnSpace = Nothing 
Set objOutlook = Nothing 

End Sub 

回答

0

你缺少NEXT語句關閉FOR EACH循環:

For Each MailItem In objFolder.Items 
    rt = MailItem.ReceivedTime 'getting received time for each mailitem 
    nrt = Format(rt, "M/ d/ yyyy") 'formatting the received time to match value of datevalue keyword 
    If DateValue(nrt) = Empty Then 
     NonTicket0 = NonTicket0 + 1 
    ElseIf DateValue(Date - 1) = DateValue(nrt) Then 
     NonTicket1 = NonTicket1 + 1 
    ElseIf DateValue(Date - 2) = DateValue(nrt) Then 
     NonTicket2 = NonTicket2 + 1 
    ElseIf DateValue(Date - 3) = DateValue(nrt) Then 
     NonTicket3 = NonTicket3 + 1 
    ElseIf DateValue(Date - 4) = DateValue(nrt) Then 
     Exit For 
    End If 
NEXT ' <--- Add this 
+0

OMG ......以爲我試過了。非常感謝。 –