繁体   English   中英

VBA 下载 email 附件从 Outlook 与多标准

[英]VBA to download email attachments from Outlook with multi Criteria

我正在尝试创建一个代码,从 excel(日期、主题、email 正文、邮箱、文件夹导航和导出到)中的某些输入中,我从下载的这些特定电子邮件中获取附件。

我的问题是,即使代码获得了正确的邮箱和文件夹,并将附件下载到我想要的文件夹,它也没有得到日期、主题和 email 正文。 整个目标是从日期开始的电子邮件中下载附件,email 主题包含一些单词,email 正文包含某些单词,但是我得到的是邮箱中所有电子邮件的附件。

这是我的代码(我试图将 & 更改为 AND,但它甚至没有下载):

 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
```

首先,不需要遍历文件夹中的所有项目,如代码所示:

For Each olItem In olFolder.Items
    If olItem.Class = olMail Then

相反,Outlook object model 提供Items ZA2F2ED4F8EBC2ABCBB4DC40 的Find / FindNextRestrict方法。 因此,您将能够仅迭代与您的搜索条件相对应的项目。 在以下文章中阅读有关这些方法的更多信息:

例如,以下搜索条件可用于获取带有附件和包含关键字的主题的项目:

Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & _
                   Chr(34) & " Like '%keyword%' AND " & _
                   Chr(34) & "urn:schemas:httpmail:hasattachment" & _
                   Chr(34) & "=1"

有关更多示例,请查看VBA Outlook:查找特定附件并以不同的名称保存并检查发件人电子邮件地址

此外,您可能会发现Application class 的AdvancedSearch方法很有帮助。 有关更多信息,请参阅 Outlook 中的高级搜索以编程方式:C#、VB.NET

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM