Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 需要取SentOn日期的邮件_Vba_Excel - Fatal编程技术网

Vba 需要取SentOn日期的邮件

Vba 需要取SentOn日期的邮件,vba,excel,Vba,Excel,我有一个下面的代码,抛出错误。我只需要取今天(当前日期)收到的邮件。请帮忙解决这个问题。我的其他If案例运行良好。除了那个日期(森顿) 我的脚本就像它根据用户给定的时间提取电子邮件一样,提取文件并创建一个合并的工作表。我正在尝试获取在当前日期收到的邮件 Sub Unzip() Dim app As Object Dim NS As Object Dim InboX As Object Dim SubFolder As Object

我有一个下面的代码,抛出错误。我只需要取今天(当前日期)收到的邮件。请帮忙解决这个问题。我的其他If案例运行良好。除了那个日期(森顿)

我的脚本就像它根据用户给定的时间提取电子邮件一样,提取文件并创建一个合并的工作表。我正在尝试获取在当前日期收到的邮件

Sub Unzip()
        Dim app As Object
        Dim NS As Object
        Dim InboX As Object
        Dim SubFolder As Object
        Dim MsG As Object
        Dim AtcHmt As Object
        Dim ReceivedHour As Date
        Dim oFrom As Date
        Dim oEnd As Date
        Dim f As Boolean
        '''Variables for unzipping
        Dim FSO As Object
        Dim ShellApp As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set ShellApp = CreateObject("Shell.Application")
        Dim FileNameFolder As Variant
        Dim FileName As Variant
        Dim Ldate As String
        Dim myitem As Object   
        Ldate 
        On Error Resume Next
        Set app = GetObject(Class:="Outlook.Application")
        If app Is Nothing Then
            Set app = CreateObject(Class:="Outlook.Application")
            f = True
        End If
        On Error GoTo ErrHandler
        Set NS = app.GetNamespace("MAPI")
        Set InboX = NS.GetDefaultFolder(6) ' olFolderInbox
        Set SubFolder = InboX.Folders("TEST")
        Set myitem = Outlook.mailitem
        FileNameFolder = Environ$("USERPROFILE") & "\Documents\test\"
        oFrom = CDate(InputBox("Please give Start time" & vbCrLf & _
                                "Example: 9AM", ("Shadowserver report"), "9AM"))
        oEnd = CDate(InputBox("Please give End time" & vbCrLf & _
                                "Example: 6PM", ("Shadowserver report"), "6PM"))

        For Each MsG In SubFolder.Items
        If Ldate = DateValue(myitem.SentOn) Then
            MsG ("Yes")
            ReceivedHour = MsG.ReceivedTime
            If oFrom <= TimeValue(ReceivedHour) And _
                TimeValue(ReceivedHour) <= oEnd Then
                For Each AtcHmt In MsG.Attachments
                    FileName = AtcHmt.FileName
                    If LCase(Right(FileName, 3)) = "zip" Then
                        FileName = FileNameFolder & FileName
                        AtcHmt.SaveAsFile FileName

                        ShellApp.Namespace(FileNameFolder).CopyHere _
                                ShellApp.Namespace(FileName).Items

                        Kill FileName
                        On Error Resume Next
                        FSO.Deletefolder Environ$("Temp") & "\Temporary Directory*", True
                    End If
                Next AtcHmt
            End If
        End If
        Next MsG
    End Sub
Sub-Unzip()
Dim应用程序作为对象
作为对象的Dim NS
将收件箱变暗为对象
将子文件夹变暗为对象
将MsG作为对象
作为对象的Dim AtcHmt
Dim作为日期接收小时数
ROM的Dim作为日期
日期
作为布尔函数的Dim f
''用于解压缩的变量
作为对象的Dim FSO
将ShellApp设置为对象
设置FSO=CreateObject(“Scripting.FileSystemObject”)
设置ShellApp=CreateObject(“Shell.Application”)
Dim FileNameFolder作为变量
变暗文件名作为变量
作为字符串的Dim Ldate
将myitem设置为对象
Ldate
出错时继续下一步
Set app=GetObject(类:=“Outlook.Application”)
如果应用程序什么都不是,那么
设置app=CreateObject(类:=“Outlook.Application”)
f=真
如果结束
关于错误转到错误处理程序
设置NS=app.GetNamespace(“MAPI”)
设置收件箱=NS.GetDefaultFolder(6)'olFolderInbox
Set SubFolder=InboX.Folders(“测试”)
设置myitem=Outlook.mailitem
FileNameFolder=Environ$(“USERPROFILE”)和“\Documents\test\”
oFrom=CDate(输入框(“请给出开始时间”&vbCrLf&_
“示例:上午9点”(“Shadowserver报告”),“上午9点”)
oEnd=CDate(输入框(“请给出结束时间”&vbCrLf&_
“示例:6PM”(“Shadowserver报告”),“6PM”))
对于子文件夹中的每个MsG.Items
如果Ldate=DateValue(myitem.SentOn),则
味精(“是”)
ReceivedHour=MsG.ReceivedTime

如果oFrom则不要循环浏览文件夹中的所有项目。使用
Items.Find/FindNext
Items.Restrict
以及对[ReceivedTime]的限制在给定范围内。

不要循环浏览文件夹中的所有项目。使用
项。查找/FindNext
项。将
以及[ReceivedTime]的限制限制限制在给定范围内。

嗨,这就是我下决心回答问题的方式

Dim Ldate As String

    Ldate = Date

    '''Define the Outlook folder you want to scan
    On Error Resume Next
    Set app = GetObject(Class:="Outlook.Application")
    If app Is Nothing Then
        Set app = CreateObject(Class:="Outlook.Application")
        f = True
    End If
    On Error GoTo ErrHandler
    Set NS = app.GetNamespace("MAPI")
    Set InboX = NS.PickFolder
    'Set SubFolder = InboX.Folders("Shadow Server Reports")
    'Dim myitem As Outlook.MailItems
    '''Define the folder where you want to save attachments
    FileNameFolder = Environ$("USERPROFILE") & "\Documents\test\"

    '''Define the hours in between which you want to apply the extraction
    oFrom = CDate(InputBox("Please give Start time" & vbCrLf & _
                            "Example: 9AM", ("Shadowserver report"), "9AM"))
    oEnd = CDate(InputBox("Please give End time" & vbCrLf & _
                            "Example: 6PM", ("Shadowserver report"), "6PM"))

    For Each MsG In InboX.Items
    If Ldate = DateValue(MsG.SentOn) Then
        ReceivedHour = MsG.ReceivedTime
        If oFrom <= TimeValue(ReceivedHour) And _
            TimeValue(ReceivedHour) <= oEnd Then
            For Each AtcHmt In MsG.Attachments
Dim Ldate作为字符串
Ldate=日期
''定义要扫描的Outlook文件夹
出错时继续下一步
Set app=GetObject(类:=“Outlook.Application”)
如果应用程序什么都不是,那么
设置app=CreateObject(类:=“Outlook.Application”)
f=真
如果结束
关于错误转到错误处理程序
设置NS=app.GetNamespace(“MAPI”)
设置收件箱=NS.PickFolder
'Set SubFolder=InboX.Folders(“影子服务器报告”)
'将myitem设置为Outlook.MailItems
''定义要保存附件的文件夹
FileNameFolder=Environ$(“USERPROFILE”)和“\Documents\test\”
''定义要应用提取的时间间隔
oFrom=CDate(输入框(“请给出开始时间”&vbCrLf&_
“示例:上午9点”(“Shadowserver报告”),“上午9点”)
oEnd=CDate(输入框(“请给出结束时间”&vbCrLf&_
“示例:6PM”(“Shadowserver报告”),“6PM”))
对于收件箱中的每个消息。项目
如果Ldate=DateValue(MsG.SentOn),则
ReceivedHour=MsG.ReceivedTime

如果oFrom嗨,这就是我开车下来回答的方式

Dim Ldate As String

    Ldate = Date

    '''Define the Outlook folder you want to scan
    On Error Resume Next
    Set app = GetObject(Class:="Outlook.Application")
    If app Is Nothing Then
        Set app = CreateObject(Class:="Outlook.Application")
        f = True
    End If
    On Error GoTo ErrHandler
    Set NS = app.GetNamespace("MAPI")
    Set InboX = NS.PickFolder
    'Set SubFolder = InboX.Folders("Shadow Server Reports")
    'Dim myitem As Outlook.MailItems
    '''Define the folder where you want to save attachments
    FileNameFolder = Environ$("USERPROFILE") & "\Documents\test\"

    '''Define the hours in between which you want to apply the extraction
    oFrom = CDate(InputBox("Please give Start time" & vbCrLf & _
                            "Example: 9AM", ("Shadowserver report"), "9AM"))
    oEnd = CDate(InputBox("Please give End time" & vbCrLf & _
                            "Example: 6PM", ("Shadowserver report"), "6PM"))

    For Each MsG In InboX.Items
    If Ldate = DateValue(MsG.SentOn) Then
        ReceivedHour = MsG.ReceivedTime
        If oFrom <= TimeValue(ReceivedHour) And _
            TimeValue(ReceivedHour) <= oEnd Then
            For Each AtcHmt In MsG.Attachments
Dim Ldate作为字符串
Ldate=日期
''定义要扫描的Outlook文件夹
出错时继续下一步
Set app=GetObject(类:=“Outlook.Application”)
如果应用程序什么都不是,那么
设置app=CreateObject(类:=“Outlook.Application”)
f=真
如果结束
关于错误转到错误处理程序
设置NS=app.GetNamespace(“MAPI”)
设置收件箱=NS.PickFolder
'Set SubFolder=InboX.Folders(“影子服务器报告”)
'将myitem设置为Outlook.MailItems
''定义要保存附件的文件夹
FileNameFolder=Environ$(“USERPROFILE”)和“\Documents\test\”
''定义要应用提取的时间间隔
oFrom=CDate(输入框(“请给出开始时间”&vbCrLf&_
“示例:上午9点”(“Shadowserver报告”),“上午9点”)
oEnd=CDate(输入框(“请给出结束时间”&vbCrLf&_
“示例:6PM”(“Shadowserver报告”),“6PM”))
对于收件箱中的每个消息。项目
如果Ldate=DateValue(MsG.SentOn),则
ReceivedHour=MsG.ReceivedTime

如果是ROM,您可以使用
Debug.Print DateValue(myitem.SentOn)
将其打印到调试窗口中,并查看它是否匹配
Debug.Print Ldate
Hi-peh,再次抛出变量未定义错误我不确定,但不应该是
DateValue(MsG.SentOn)
?您可以使用
Debug.Print DateValue(myitem.SentOn)
将其打印到调试窗口,查看是否匹配
debug.print Ldate
Hi-peh,再次抛出变量未定义错误我不确定,但它不应该是
DateValue(MsG.SentOn)
?请简要说明一下?我是一个初学者。我的代码是正确地检查收到的时间,而不是日期。我还需要按日期取邮件“([ReceivedTime]>2016年6月1日上午4:00”)和([ReceivedTime]<'2016年6月2日上午4:00”)”您能简要介绍一下吗?我是一个初学者。我的代码是正确地检查收到的时间,而不是日期。我还需要按日期取邮件“([ReceivedTime]>2016年6月1日上午4:00”)和([ReceivedTime]<'2016年6月2日上午4:00”)