我正在尝试修改代码以在Lotus Notes中查找电子邮件(主题中包含可变日期),提取附件并保存到桌面。当电子邮件位于收件箱中时,我让它工作了。但是,由于电子邮件可能被归档或不归档,因此我希望宏可以查看所有文档视图。我已经研究过,使用过滤器查看视图,或创建notesdocumentcollection可能符合我的需要。但我一直无法修改。
使用下面的代码,Excel为我提供了一个框,说明“Microsoft Office Excel正在等待另一个应用程序完成OLE操作”
感谢您的帮助。
由于
Sub CheckMail ()
Dim Session As Object
Dim MailDB As Object
Dim Doc As Object
Dim Collection As Object
Dim filter As String
filter = "[CreationDate]>=" & 6 / 9 / 15 & " AND [CreationDate]<=" & 6 / 10 / 15
Set Session = CreateObject("notes.notessession") 'creates notes session
Set MailDB = Session.getdatabase("ServerName/AAA", "XXX.nsf")
Set Collection = MailDB.FTSearch(filter, 0)
Set Doc = Collection.GETFIRSTDOCUMENT
Do Until Doc Is Nothing
&#39;其余代码循环查找具有匹配主题的电子邮件
End Sub
答案 0 :(得分:1)
您不需要视图来执行ftsearch,这也适用于数据库对象。 这适用于数据库中的所有文档:
Set collection = MailDB.FtSearch( filter, 0 )
回答您的评论:我刚刚在我的客户端中检查了您的搜索字词,并返回错误Relational operators are not supported in text fields
。那是因为&#34; CreationDate&#34;不是Lotus Notes中的有效字段。
邮件文件中的所有邮件都有一个项目&#34; PostedDate&#34;这表明,邮件发送时。传入的邮件有一个项目&#34; DeliveredDate&#34;表示,当他们被交付。您的查询必须使用其中一个而不是不存在的&#34; CreationDate&#34;。
补充说明:
要获取客户端中配置的邮件文件,您不需要对路径进行硬编码,可以使用三个简单的行来获取它:
搜索总是优于FTSearch,因为它更准确。
我更愿意使用以下代码来获取正确的文档(由于使用搜索而不是ftsearch,搜索词的语法不同
Set Session = CreateObject("notes.notessession") 'creates notes session
Set MailDB = Session.getdatabase("", "")
Call MailDB.OpenMail
filter = {Form = "Memo" : "Reply" & PostedDate >= [06/09/15] & PostedDate <= [6/10/15]}
Set Collection = MailDB.Search( filter, Nothing, 0 )
我为&#34; Form&#34;添加了一个过滤器。因为否则您将获得日历邀请,联系人,ToDos。
如果您想使用&#34; FTSearch&#34;,那么相同的过滤器将如下所示:
filter = {([Form] = "Memo" OR [Form] = "Reply") AND
[PostedDate] >= 6/09/15 AND [PostedDate] <= 6/10/15}