如何从Outlook邮箱中的所有电子邮件中获取收到的时间

时间:2014-09-18 15:03:59

标签: vba datetime outlook

我已经完成了大部分工作,但需要帮助。我想存储来自各种outlook文件夹的所有收到的电子邮件时间。所有的文件夹都在同一个文件夹中,所以我有一个数组来遍历每个文件夹。我需要将时间存储到一个变量中,然后我可以将其显示在write.console中。将有数百次显示。变量是Totalmsg,我希望将这些时间存储在其中,然后在完成后显示。

Sub EmailArrivalTimes()
Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder
Dim MailItem
Dim EmailCount() As Integer, arrNames


Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")

arrNames = Array     ("Andrew", "Ashton", "Becca", "Beth", "Bree", "Brittany", "Cecilia", "Chance", "Christina J.", "Christine", "Dustin", "James", "Jeff", "Jenni", "Jennifer W.", "Josh", "Josie", "Kara", "Lisa", "Megan", "Misti", "Nathan", "Paul", "Sam", "Shane", "Shawna") 'add other names here...
ReDim EmailCount(LBound(arrNames) To UBound(arrNames))

For x = LBound(arrNames) To UBound(arrNames)

On Error Resume Next
Set objFolder = objnSpace.Folders("Mailbox - IT Support Center"). _
        Folders("Onshore - " & arrNames(x)).Folders("completed")
On Error GoTo 0

ArrivalTime = 0

Dim Totalmsg

If Not objFolder Is Nothing Then
    For Each MailItem In objFolder.Items
       Totalmsg = MailItem.ReceivedTime
Next
End If


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

End Sub

1 个答案:

答案 0 :(得分:0)

现在你在这个循环的每次迭代中覆盖TotalMsg的值:

If Not objFolder Is Nothing Then
    For Each MailItem In objFolder.Items
       Totalmsg = MailItem.ReceivedTime
    Next
End If

您需要附加到它,而不是:

If Not objFolder Is Nothing Then
    For Each MailItem In objFolder.Items
       Totalmsg = TotalMsg & vbCRLF & MailItem.ReceivedTime
    Next
End If

Debug.Print TotalMsg 
     'Note: this will likely exceed what can fit in the console window, _
     ' but you can instead write the string to a text file/etc.