Причина ваш .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
Надеюсь, что это поможет!
Код отличный, человек. Я попробую сейчас. Не могли бы вы объяснить, почему двойные кавычки в ("[Subject] =" "This Sketch Email" "")? – AndroidDev
Двойные кавычки используются, потому что в строке есть строка. Без двойных кавычек компилятор думал бы, что до конца строки он дошел до конца. [СМОТРИТЕ ЭТО] (http://www.techrepublic.com/blog/microsoft-office/5-rules-for-embedding-strings-in-vba-code/) для получения дополнительной информации. – ARich
Я понял! И код работал отлично .. Большое спасибо, человек! – AndroidDev