Outlook .Restrict不适用于Date [英] Outlook .Restrict does not work with 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屋!