Application.AdvancedSearch语法问题

时间:2016-06-29 16:57:29

标签: vba outlook outlook-vba

我想知道如何修复此Outlook 高级搜索类似SQL的条件字符串:

filterStr = "@SQL=""urn:schemas:httpmail:subject"" = """ & _
            EmailName & """ AND ""urn:schemas:httpmail:date"" >= """ & _
            TDateUTC & """ AND ""urn:schemas:httpmail:date"" <= """ & _
            TDateUTCEOD & """"
  • EmailName是一个字符串变量,用于调用电子邮件主题

  • TDateUTC是一个日期变量,它调用输入日期然后 将其转换为UTC

  • TDateUTCEOD如上所述,时间设定为晚上11:59:59

我的语法完全被破解,因为我不知道如何将变量合并到Outlook VBA的高级搜索中。

1 个答案:

答案 0 :(得分:2)

以编程方式执行高级搜索MSDN示例显示了正确的语法:

Const strF As String = "urn:schemas:mailheader:subject = 'Test'"  

注意:

  • urn:schemas:foo:bar部分被双引号包围。
  • 字段值由单引号包围。
  • MSDN未提及@SQL=前缀。

这意味着正确的标准字符串将如下所示:

filterStr = "urn:schemas:httpmail:subject = '" & EmailName & _
      "' AND urn:schemas:httpmail:date >= '" & TDateUTC & _
      "' AND urn:schemas:httpmail:date <= '" & TDateUTCEOD & '"

请注意,如果TDateUTCTDateUTCEOD变量为String,则会隐式将DateCStr转换为filterStr = "urn:schemas:httpmail:subject = '" & EmailName & _ "' AND urn:schemas:httpmail:date >= '" & CStr(TDateUTC) & _ "' AND urn:schemas:httpmail:date <= '" & CStr(TDateUTCEOD) & '" 值。您可以使用内置的npm update 转换函数明确转换:

email