簡體   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