【问题标题】:VBA Lotus Notes View All Documents with FilterVBA Lotus Notes 使用过滤器查看所有文档
【发布时间】:2015-06-11 17:34:15
【问题描述】:

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

'其余的代码循环查找具有匹配主题的电子邮件

结束子

【问题讨论】:

    标签: vba view filter lotus


    【解决方案1】:

    您不需要视图来执行 ftsearch,这也适用于数据库对象。 这将适用于数据库中的所有文档:

    Set collection = MailDB.FtSearch( filter, 0 )
    

    回答您的评论:我刚刚在我的客户端中检查了您的搜索词,它返回错误 Relational operators are not supported in text fields。这是因为“CreationDate”不是 Lotus Notes 中的有效字段。

    邮件文件中的所有邮件都有一个“PostedDate”项,用于显示邮件的发送时间。收到的邮件有一个项目“DeliveredDate”来显示,当它们被传递时。您的查询必须使用其中之一,而不是不存在的“CreationDate”。

    补充说明:

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

    2. 搜索总是比 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 )
    

    我为“表单”添加了一个过滤器,否则您还会收到日历邀请、联系人、待办事项。

    如果你想使用“FTSearch”,那么同样的过滤器应该是这样的:

    filter = {([Form] = "Memo" OR [Form] = "Reply") AND 
      [PostedDate] >= 6/09/15 AND [PostedDate] <= 6/10/15}
    

    【讨论】:

    • 我按照您的建议进行了如下更改。但是,我仍然收到“Microsoft Office Excel 正在等待另一个应用程序完成 OLE 操作”消息框。而且我必须通过 taskmgr 关闭 Lotus,它才能中断并以错误代码结束,错误代码为“运行时错误”-2147023170(800706be):自动化错误。远程过程调用失败'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多