我准备了该工具,该工具根据用户限制下载电子邮件附件。它运行良好,但是当我将其实现为其他部门的新员工时,我遇到了一个奇怪的问题,因为限制功能根本无法正常工作。我提供邮箱,文件夹以及具有如下限制条件的详细信息,当我通过循环检查每封电子邮件时,它会返回0,然后返回0。
Set olApp = CreateObject("Outlook.Application")
Set olNamespace = olApp.GetNamespace("MAPI")
Set olMailboxFolder = olNamespace.Folders("FolderA").Folders("FolderB")
strRestriction = "[ReceivedTime] > '" & Format(myStartDate, "DDDDD HH:MM") & "' AND [ReceivedTime] < '" & Format(myEndDate, "DDDDD" & " 23:59") & "'"
Set olEmailFound = olMailboxFolder.Items.Restrict(strRestriction)
使用Outlook /文件夹设置可能有问题吗?如果代码错误,它将无法在任何地方使用,但是只有一个人...
答案 0 :(得分:0)
您必须使用正确的日期值字符串表达式格式:
不起作用:
strRestriction = "[ReceivedTime] >= #" & Format(myStartDate, "yyyy\/mm\/dd hh\:nn") & "# AND [ReceivedTime] < #" & Format(DateAdd("d", 1, myEndDate), "yyyy\/mm\/dd") & "#"
工作:
文档参考:Items.Restrict method (Outlook)
尽管日期和时间通常以日期格式存储,但 查找和限制方法要求转换日期和时间 到字符串表示形式。确保日期格式为 Microsoft Outlook期望使用Format函数。
但是,文档有问题。 AM/PM
部分缺少斜杠:
sFilter = "[LastModificationTime] > '" & Format("1/15/99 3:30pm", "ddddd h:nn AMPM") & "'"
在国际环境中似乎有效的是预定义的格式。因此,这适用于丹麦本地化:
Dim StartDate As String
Dim EndDate As String
Dim n As Integer
StartDate = Format(myStartDate, "Short Date") & " " & Format(myStartDate, "Short Time")
EndDate = Format(myEndDate, "Short Date") & " " & Format(myEndDate, "Short Time")
strRestriction = "[ReceivedTime] >= '" & StartDate & "' And [ReceivedTime] < '" & EndDate & "'"
Debug.Print strRestriction
Debug.Print olMailboxfolder.Items.Count
Set olEmailFound = olMailboxfolder.Items.Restrict(strRestriction)
For n = 1 To olEmailFound.Count
Debug.Print n, olEmailFound.Item(n).ReceivedTime
Next
请注意,如果格式化的字符串中包含秒,则比较将失败。