VBA Lotus Notes查看具有筛选器的所有文档

时间:2015-06-11 17:34:15

标签: vba view filter lotus

我正在尝试修改代码以在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

1 个答案:

答案 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;。

补充说明:

  1. 要获取客户端中配置的邮件文件,您不需要对路径进行硬编码,可以使用三个简单的行来获取它:

  2. 搜索总是优于FTSearch,因为它更准确。

  3. 我更愿意使用以下代码来获取正确的文档(由于使用搜索而不是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}