Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 显示收件箱中按日期分隔的电子邮件数_Vba_Email_Outlook - Fatal编程技术网

Vba 显示收件箱中按日期分隔的电子邮件数

Vba 显示收件箱中按日期分隔的电子邮件数,vba,email,outlook,Vba,Email,Outlook,我想显示收件箱中的电子邮件数量,以日期分隔,然后将包含该信息的电子邮件发送给特定用户 除了昨天的日期,我这里所有的东西都有效——它显示了电子邮件的数量+1。不过,其他电子邮件数量是正确的 Sub HowManyEmails() Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder Dim EmailCount As Integer Set objOutlook = CreateOb

我想显示收件箱中的电子邮件数量,以日期分隔,然后将包含该信息的电子邮件发送给特定用户

除了昨天的日期,我这里所有的东西都有效——它显示了电子邮件的数量+1。不过,其他电子邮件数量是正确的

Sub HowManyEmails()

    Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder
    Dim EmailCount As Integer

    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

    MsgBox "Number of emails in the folder: " & EmailCount & " Total Non-Ticket email count"

    Dim dateStr As String
    Dim myItems As Outlook.Items
    Dim dict As Object
    Dim msg As String

    Set dict = CreateObject("Scripting.Dictionary")
    Set myItems = objFolder.Items

    myItems.SetColumns ("SentOn")

    ' Determine date of each message:
    For Each myItem In myItems
        dateStr = GetDate(myItem.SentOn)
        If Not dict.Exists(dateStr) Then
            dict(dateStr) = 0
        End If
        dict(dateStr) = CLng(dict(dateStr)) + 1
    Next myItem

    ' Output counts per day:
    For Each o In dict.Keys
        msg = msg & o & ":    " & dict(o) & " Non-Ticket items" & vbCrLf
    Next

    MsgBox msg

    Set objFolder = Nothing
    Set objnSpace = Nothing
    Set objOutlook = Nothing

    'Send Mail
    Set OutApp = CreateObject("outlook.Application")
    Set OutMail = OutApp.CreateItem(o)

    With OutMail
        .Subject = "Non Ticket Emails"
        .To = "johndoe@yahoo.com; Jimmydoe@schneider.com"
        .Body = msg
        .Display
        .Send
    End With

    Set OutMail = Nothing
    Set OutApp = Nothing

End Sub
Sub HowManyEmails()
Dim objOutlook为对象,objnSpace为对象,objFolder为MAPIFolder
将电子邮件计数为整数
设置objOutlook=CreateObject(“Outlook.Application”)
设置objnSpace=objOutlook.GetNamespace(“MAPI”)
出错时继续下一步
设置objFolder=objnSpace.Folders(“邮箱-IT支持中心”).Folders(“与票据无关的电子邮件”)
如果错误号为0,则
呃,明白了
MsgBox“没有这样的文件夹。”
出口接头
如果结束
EmailCount=objFolder.Items.Count
MsgBox“文件夹中的电子邮件数:”&EmailCount&“非票证电子邮件总数”
Dim dateStr作为字符串
将myItems暗显为Outlook.Items
作为对象的Dim dict
作为字符串的Dim msg
Set dict=CreateObject(“Scripting.Dictionary”)
设置myItems=objFolder.Items
myItems.SetColumns(“SentOn”)
'确定每条消息的日期:
对于myItems中的每个myItem
dateStr=GetDate(myItem.SentOn)
如果不存在dict.Exists(dateStr),则
dict(dateStr)=0
如果结束
dict(dateStr)=CLng(dict(dateStr))+1
下一个我的项目
'每天的输出计数:
对于dict.键中的每个o
msg=msg&o&“:”&dict(o)&“非票证项目”&vbCrLf
下一个
MsgBox味精
设置objFolder=Nothing
设置objnSpace=Nothing
设置objOutlook=Nothing
“发邮件
Set-OutApp=CreateObject(“outlook.Application”)
Set OutMail=OutApp.CreateItem(o)
发邮件
.Subject=“非票证电子邮件”
.To=”johndoe@yahoo.com; Jimmydoe@schneider.com"
.Body=msg
.展示
.发送
以
发送邮件=无
设置应用程序=无
端接头

好的,我发现了问题所在。脚本捕获发送的时间,而不是接收的时间(outlook按该时间排序)。我已经把senton改成了代码中的receivedtime,它可以工作了

GetDate(myItem.SentOn)
有什么作用?我不确定,这是从现有模板复制的。请检查您的代码。它应该在某个地方