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