簡體   English   中英

查找主題以特定文本開頭的電子郵件

[英]Find an email with subject starting with specific text

我試圖通過以特定文本開頭的主題查找電子郵件,然后從該電子郵件下載附件。

我正在使用帶有 Restrict 函數的變量,但是問題似乎是由於使用了通配符。

Sub findemail()

cntofmkts = Range("A" & Rows.Count).End(xlUp).Row
cntofmkts = cntofmkts - 1
ftodaydate = Format(Date, "yyyy-mm-dd")

Do
    If i > cntofmkts Then Exit Do

    MarketName = Range("A" & j).Value    
    Findvariable = "XXX_" & MarketName & "_ABC_" & ftodaydate

    For Each oOlItm In oOlInb.Items.Restrict("[Subject] = *Findvariable*")
        eSender = oOlItm.SenderEmailAddress
        dtRecvd = oOlItm.ReceivedTime
        dtSent = oOlItm.CreationTime
        sSubj = oOlItm.Subject
        sMsg = oOlItm.Body

        If oOlItm.Attachments.Count <> 0 Then
            For Each oOlAtch In oOlItm.Attachments
                '~~> Download the attachment
                oOlAtch.SaveAsFile NewFileName & oOlAtch.Filename
                Exit For
            Next
        Else
            MsgBox "The First item doesn't have an attachment"
        End If

        Exit For
    Next

    i = i + 1
    j = j + 1

Loop
End sub

您應該注意的第一件事是Restrict()方法不會通過變量的名稱來評估變量。 您必須將變量連接到字符串。

另一個是,如果您查看 MSDN 站點上的示例,您會發現不支持通配符,因此您必須使用 SQL 語法,並且過濾器表達式中的搜索文本必須在引號之間。

' this namespace is for Subject
filterStr = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" like '%" & Findvariable & "%'"

似乎urn:schemas:httpmail:subject也有效並且更容易理解,但我現在無法確認:

filterStr = "@SQL=""urn:schemas:httpmail:subject"" like '%" & Findvariable & "%'"

DASL 過濾器支持的字符串比較包括等價、前綴、短語和子字符串匹配。

對於 oOlInb.Items.Restrict("[Subject] = Findvariable ") 中的每個 oOlItm

看起來您正在搜索完全匹配。 但是您需要的是使用以下語法查找子字符串:

criteria = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%question%'" 

請注意,在對 Subject 屬性進行篩選時,將忽略諸如“RE:”和“FW:”之類的前綴。

有關更多信息,請參閱 使用字符串比較過濾項目

PS Restrict 方法是使用 Find 方法或 FindNext 方法迭代集合中特定項目的替代方法。 如果項目數量較少,則 Find 或 FindNext 方法比過濾更快。 如果集合中有大量項目,則 Restrict 方法要快得多,尤其是當預計只能找到大型集合中的少數項目時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM