在电子邮件主题行中搜索电话号码

时间:2014-01-15 21:07:03

标签: vb.net outlook outlook-addin outlook-vba

http://msdn.microsoft.com/en-us/library/office/aa209973(v=office.11).aspx的示例开始,我能够创建以下代码块,在Outlook收件箱中搜索主题行以特定电话号码“555-5555”开头的电子邮件,使用“ci_startswith” 。

Public blnSearchComp As Boolean

Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search)
    MsgBox "The AdvancedSearchComplete Event fired."
    blnSearchComp = True
End Sub

Sub TestAdvancedSearchComplete()
    Dim sch As Outlook.Search
    Dim rsts As Outlook.Results
    Dim i As Integer
    blnSearchComp = False
    Const strF As String = "urn:schemas:mailheader:subject ci_startswith '555-5555'"
    Const strS As String = "Inbox"   
    Set sch = Application.AdvancedSearch(strS, strF) 
    While blnSearchComp = False
        DoEvents
    Wend 
    Set rsts = sch.Results
    For i = 1 To rsts.Count
        MsgBox rsts.Item(i).SenderName
    Next
End Sub

显然,如果主题行没有以确切的电话号码开头,在本例中为“555-5555”,则搜索无法找到该电子邮件。代替“ci_startswith”,我尝试使用“喜欢”比较,但是现在无法找到任何匹配项,包括那些使用“ci_startswith”找到的匹配项。

    Const strF As String = "urn:schemas:mailheader:subject like '555-5555'"

我是否错误地使用“喜欢”比较?从我所看到的,它似乎应该工作。或者这是一个已知的错误/问题?如果是这样,是否有任何解决方法可以提供更广泛的搜索能力?

最终,我想使用类似下面的内容来搜索所有可能的电话号码实例。

    Const strF As String = "urn:schemas:mailheader:subject like '###-####'"

提前致谢!

---------编辑/添加---------

Public blnSearchComp As Boolean

Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As search)
    MsgBox "The AdvancedSearchComplete Event fired."
    blnSearchComp = True
End Sub

Sub TestAdvancedSearchComplete()
    Dim sch As Outlook.search
    Dim rsts As Outlook.Results
    Dim i As Integer
    blnSearchComp = False
    Const strF As String = "urn:schemas:mailheader:subject LIKE '%###%'"
    Const strS As String = "Inbox"
    Set sch = Application.AdvancedSearch(strS, strF)
    While blnSearchComp = False
        DoEvents
    Wend
    Set rsts = sch.Results
    For i = 1 To rsts.Count
        MsgBox rsts.Item(i).SenderName
    Next
End Sub

1 个答案:

答案 0 :(得分:0)

使用“LIKE”时,您必须在标准周围添加%字符,具体取决于您要搜索的方式

http://msdn.microsoft.com/en-us/library/office/cc513841(v=office.12).aspx

  

关键字like执行前缀,子串或等价匹配。令牌(字符,单词或单词)以特定方式用%字符括起,具体取决于匹配类型:例如'%'提供前缀匹配。例如,限制类似'cat%'将匹配“cat”和“catalog”。像'%%'提供子串匹配。例如,限制类似'%cat%'将匹配“cat”,“catalog”,“kittycat”和“十项全能”。像''提供等价匹配。例如,限制类似'cat'将匹配“cat”和“RE:Cat。”