我试图创建一个代码,其中从excel中的特定输入(日期,主题,电子邮件正文,邮箱,文件夹导航和导出到),我从这些特定的电子邮件下载附件。
我的问题是,即使代码获得正确的邮箱和文件夹,并下载到我想要的文件夹,它没有日期,主题和电子邮件正文。整个目标是从电子邮件中下载附件,从日期起,电子邮件主题包含一些单词,电子邮件正文包含某些单词,但是我得到的是邮箱上所有电子邮件的附件。
下面是我的代码(我试图更改& for,但它甚至没有下载):
Sub download_attachment()
Dim olApp As Outlook.Application
Dim olNS As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder
Dim olItem As Object
Dim mailitem As Outlook.mailitem
Dim olAtt As Outlook.Attachment
Dim Folder_Navigation As String
Dim folders() As String
Dim folderIndx As Long
Dim dateFormat
dateFormat = Format(Now, "dd.mm.yyyy")
Set olApp = New Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.folders([Sheet1].[Mailbox_Name].Text)
Folder_Navigation = [Sheet1].[Folder_Navigation].Value
folders = Split(Folder_Navigation, ";")
For folderIndx = LBound(folders) To UBound(folders)
Debug.Print folders(folderIndx)
Set olFolder = olFolder.folders(folders(folderIndx))
Next folderIndx
For Each olItem In olFolder.Items
If olItem.Class = olMail Then
Set mailitem = olItem
Debug.Print mailitem.Subject
Debug.Print mailitem.ReceivedTime
If mailitem.ReceivedTime > [Sheet1].[Date].Value & _
InStr(mailitem.Subject, [Sheet1].[Subject].Value) <> 0 & _
InStr(mailitem.Body, [Sheet1].[Email_Body].Value) <> 0 Then
For Each olAtt In mailitem.Attachments
olAtt.SaveAsFile [Sheet1].[Export_To].Text & "\" & olAtt.Filename
Next olAtt
End If
End If
Next olItem
Set olFolder = Nothing
Set olNS = Nothing
Set olApp = Nothing
End Sub发布于 2021-12-16 19:54:40
首先,没有必要对文件夹中的所有项进行迭代,如代码所示:
For Each olItem In olFolder.Items
If olItem.Class = olMail Then相反,Outlook对象模型提供了Find/FindNext或Items类的Restrict方法。因此,您将能够迭代仅对应于您的搜索条件的项。请参阅以下文章中有关这些方法的更多信息:
例如,以下搜索条件可用于获取包含关键字的附件和主题的项:
Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & _
Chr(34) & " Like '%keyword%' AND " & _
Chr(34) & "urn:schemas:httpmail:hasattachment" & _
Chr(34) & "=1"要获得更多的示例,请查看VBA Outlook:查找特定附件并以不同的名称保存和检查senderEmailAddress。
此外,您可能会发现AdvancedSearch类的Application方法很有用。有关详细信息,请参阅以编程方式在Outlook中进行高级搜索: C#、VB.NET。
https://stackoverflow.com/questions/70384756
复制相似问题