Как вы используете подстановочные знаки в Excel при поиске элементов Outlook? [Дубликат]

Было опубликовано много хороших ответов, но я хотел бы добавить еще один.

Не все числа могут быть представлены с помощью float / double. Например, будет представлено число «0,2» как «0.200000003» в одинарной точности в стандарте по плавающей точке IEEE754.

Модель для хранения действительных чисел под капотом представляет собой число с плавающей запятой в качестве

Хотя вы можете легко ввести 0.2, FLT_RADIX и DBL_RADIX равно 2; не 10 для компьютера с FPU, который использует «Стандарт IEEE для двоичной арифметики с плавающей запятой (ISO / IEEE Std 754-1985)».

. Точно так же трудно точно представлять такие числа. Даже если вы укажете эту переменную явно без какого-либо промежуточного вычисления.

8
задан D_Bester 17 February 2016 в 05:32
поделиться

2 ответа

Причина, по которой ваш .Find не работает, заключается в том, что Items.Find не поддерживает использование подстановочных знаков. Items.Find также не поддерживает поиск частичных строк. Итак, чтобы найти электронное письмо, вам нужно будет удалить подстановочные знаки и включить всю строку в критерии поиска.

Итак, вот ваши варианты:

Если вы знаете полный тему, которую вы ищете, измените свой код следующим образом:

Set Mail = olItms.Find("[Subject] = ""This Sketch Email""")

Если вы не знаете (или не будете) знать полный объект, вы можете прокрутить свою папку «Входящие» и выполнить поиск частичная сюжетная строка:

Untested

Sub Search_Inbox()

Dim myOlApp As New Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.MAPIFolder
Dim myitems As Outlook.Items
Dim myitem As Object
Dim Found As Boolean

Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myitems = myInbox.Items
Found = False

For Each myitem In myitems
    If myitem.Class = olMail Then
        If InStr(1, myitem.Subject, "sketch") > 0 Then
            Debug.Print "Found"
            Found = True
        End If
    End If
Next myitem

'If the subject isn't found:
If Not Found Then
    NoResults.Show
End If

myOlApp.Quit
Set myOlApp = Nothing

End Sub

Надеюсь, что это поможет!

8
ответ дан ARich 26 August 2018 в 12:35
поделиться

Ниже приведен способ поиска с использованием параметра Ограничения.

Это выполняется быстро, и вам не нужно перебирать элементы, чтобы найти элементы, соответствующие критериям поиска.

Sub Search_Inbox()

Dim myOlApp As New Outlook.Application
Dim objNamespace As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Dim filteredItems As Outlook.Items
Dim itm As Object
Dim Found As Boolean
Dim strFilter As String


Set objNamespace = myOlApp.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)

strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%sketch%'"

Set filteredItems = objFolder.Items.Restrict(strFilter)

If filteredItems.Count = 0 Then
    Debug.Print "No emails found"
    Found = False
Else
    Found = True
    ' this loop is optional, it displays the list of emails by subject.
    For Each itm In filteredItems
     Debug.Print itm.Subject
    Next
End If


'If the subject isn't found:
If Not Found Then
    'NoResults.Show
Else
   Debug.Print "Found " & filteredItems.Count & " items."

End If

'myOlApp.Quit
Set myOlApp = Nothing

End Sub
15
ответ дан Bill the Lizard 26 August 2018 в 12:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: