Начиная с примера в 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-55-55», поиск не находит электронную почту. Вместо «ci_startswith» я попытался использовать «похожее» сравнение, однако теперь этого не удается найти совпадения, в том числе найденные с помощью «ci_startswith».
Const strF As String = "urn:schemas:mailheader:subject like '555-5555'"
Я использую "как" сравнение некорректно? Из того, что я читал, кажется, что он должен работать. Или это известная ошибка/проблема? Если да, есть ли способы обхода, которые обеспечивают более широкую способность поиска?
В конечном счете, я хотел бы использовать что-то вроде ниже, чтобы иметь возможность искать все возможные варианты номера телефона.
Const strF As String = "urn:schemas:mailheader:subject like '###-####'"
Заранее благодарен!
--------- EDIT/ADD ---------
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
Спасибо, iambdot, за быстрый ответ! Я просто использовал «%» до и после строки поиска, как вы описали, и по-прежнему не находит совпадений, ранее найденных с помощью «ci_startswith». – phillip3196772
Эта статья здесь (http://msdn.microsoft.com/en-us/library/office/aa140155 (v = office.10) .aspx) делает именно то, что вам нужно, и должно работать. Следуйте примерам .. также вы можете опубликовать свой измененный код – iambdot
Просто добавлена самая последняя версия кода. Если я заменил хэштегов фактическим числом, он найдет только те явные числа. Тем не менее, я бы хотел, чтобы он нашел все возможные экземпляры числа. – phillip3196772