Если вы просто пытаетесь сохранить вложения электронной почты, полученные «14.01.2009», тогда
не нужно
For Each olmail In olfolder
Next
Когда вы уже используете
For i = olfolder.Items.Count To 1 Step -1
next
Вот еще один objOL.CreateItem(olMailItem)
?? удалите его, также Dim olmail as a generic Object
- в папке «Входящие» есть другие объекты, кроме MailItem.
Dim olmail As Outlook.MailItem
Set olmail = objOL.CreateItem(olMailItem)
Установите olMail
в цикле, затем проверьте, является ли olMail значение MailItem
Пример * +1031 ** * одна тысяча тридцать две
Option Explicit
Sub saveemailattachment()
'Application setup
Dim objOL As Outlook.Application
Set objOL = New Outlook.Application
Dim ONS As Outlook.NameSpace
Set ONS = objOL.GetNamespace("MAPI")
Dim olfolder As Outlook.Folder
Set olfolder = ONS.GetDefaultFolder(olFolderInbox)
Dim olmail As Object
Dim olattachment As Outlook.attachment
Dim i As Long
Dim filename As String
Dim VAR As Date
'Loop through all item in Inbox
For i = olfolder.items.Count To 1 Step -1 'Iterates from the end backwards
DoEvents
Set olmail = olfolder.items(i)
If TypeOf olmail Is Outlook.MailItem Then
VAR = Format(olmail.ReceivedTime, "MM/DD/YYYY")
filename = olmail.Subject
If VAR = "1/14/2019" Then
For Each olattachment In olmail.Attachments
olattachment.SaveAsFile _
"C:\Users\Rui_Gaalh\Desktop\Email attachment\" _
& olattachment.filename
Next
'Mark email as read
olmail.UnRead = False
End If
End If
Next
MsgBox "DONE"
End Sub
Вы также должны изучить Items.Restrict
метод
https://stackoverflow.com/a/48311864/4539709
Метод Items.Restrict является альтернативой использованию метода Find или метода FindNext для итерации по определенным элементам в коллекции. Методы Find или FindNext работают быстрее, чем фильтрация, если имеется небольшое количество элементов. Метод Restrict значительно быстрее, если в коллекции много предметов, особенно если ожидается, что в большой коллекции будет найдено только несколько предметов.
Фильтрация элементов с использованием сравнения строк , поддерживаемая фильтрами DASL, включает в себя эквивалентность, префикс, фразу и сопоставление подстроки. Обратите внимание, что при фильтрации по свойству Subject префиксы, такие как «RE:» и «FW:», игнорируются.