Outlook .Restrict不适用于Date [英] Outlook .Restrict does not work with Date

查看:474
本文介绍了Outlook .Restrict不适用于Date的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

.Restrict在外部指定时似乎不接受日期值。



Public Sub EBS()
Dim oMail As MailItem
Dim sPath As String
Dim dtDate As Date
Dim dtRecDate As Date
Dim sName As String

  Dim oNameSpace As Outlook.NameSpace 
Dim oInboxFolder As Outlook.Folder
Dim oSentFolder As Outlook.Folder
Dim i As Long

设置oNameSpace =应用程序。 GetNamespace(MAPI)
设置oInboxFolder = oNameSpace.GetDefaultFolder(olFolderInbox)
设置oSentFolder = oNameSpace.GetDefaultFolder(olFolderSentMail)

dtRecDate = DateAdd(d,-180 ,现在)

设置setItems = oInboxFolder.Items
设置RestrictedItems = setItems.Restrict([ReceivedTime]< dtRecDate AND [MessageClass] ='IPM.Note')
对于i = RestrictedItems.Count到1步-1
设置oMail = RestrictedItems.item(i)
sName = oMail.Subject
dtDate = oMail.ReceivedTime
sNa me = Format(dtDate,yyyymmdd,vbUseSystemDayOfWeek,vbUseSystem)&格式(dtDate,_hhnnss,vbUseSystemDayOfWeek,vbUseSystem)& _& sName& .msg
sName = Left(sName,256)
sPath =C:\ARCHIVE\OUTLOOK\Inbox\
Debug.Print dtRecDate
oMail .SaveAs sPath& sName,olMSG
oMail.Delete
Next i
End Sub

限制的作用是使用例如'2014/06/13'而不是dtRecDate。



当使用dtRecDate时,它不会限制任何项目。 / p>

可以帮忙吗?

解决方案

我看到以下过滤条件在代码中:

 [ReceivedTime]< dtRecDate AND [MessageClass] ='IPM.Note'

您无法在字符串中声明对象。它不会自动转换为字符串。您必须在代码中执行此操作,例如:

 [ReceivedTime]<'+格式(日期, yyyy / mm / dd)+'AND [MessageClass] ='IPM.Note'

限制方法在MSDN的页面上有以下示例:

  sFilter =[LastModificationTime]>'&格式(1/15/99 3:30 pm,ddddd h:nn AMPM)& '


.Restrict does not seem to accept a date value when it is specified outside.

Public Sub EBS() Dim oMail As MailItem Dim sPath As String Dim dtDate As Date Dim dtRecDate As Date Dim sName As String

Dim oNameSpace As Outlook.NameSpace
Dim oInboxFolder As Outlook.Folder
Dim oSentFolder As Outlook.Folder
Dim i As Long

Set oNameSpace = Application.GetNamespace("MAPI")
Set oInboxFolder = oNameSpace.GetDefaultFolder(olFolderInbox)
Set oSentFolder = oNameSpace.GetDefaultFolder(olFolderSentMail)

dtRecDate = DateAdd("d", -180, Now)

Set setItems = oInboxFolder.Items
Set RestrictedItems = setItems.Restrict("[ReceivedTime] < dtRecDate AND [MessageClass] = 'IPM.Note'")
For i = RestrictedItems.Count To 1 Step -1
    Set oMail = RestrictedItems.item(i)
    sName = oMail.Subject
    dtDate = oMail.ReceivedTime
    sName = Format(dtDate, "yyyymmdd", vbUseSystemDayOfWeek, vbUseSystem) & Format(dtDate, "_hhnnss", vbUseSystemDayOfWeek, vbUseSystem) & "_" & sName & ".msg"
    sName = Left(sName, 256)
    sPath = "C:\ARCHIVE\OUTLOOK\Inbox\"
    Debug.Print dtRecDate
    oMail.SaveAs sPath & sName, olMSG
    oMail.Delete
Next i
End Sub

The restriction works when, for example, '2014/06/13' is used instead of dtRecDate.

When dtRecDate is used, it does not restrict any item.

Can you please help?

解决方案

I see the following filter criteria in the code:

"[ReceivedTime] < dtRecDate AND [MessageClass] = 'IPM.Note'"

You can't declare object in the string. It will not be converted to string automatically. You have to do so in the code, for example:

"[ReceivedTime] < '" + Format(Date, "yyyy/mm/dd") +"' AND [MessageClass] = 'IPM.Note'"

The Restrict method has the following sample on the page in MSDN:

sFilter = "[LastModificationTime] > '" & Format("1/15/99 3:30pm", "ddddd h:nn AMPM") & "'"

这篇关于Outlook .Restrict不适用于Date的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆