【发布时间】:2018-01-04 20:00:15
【问题描述】:
我的代码可以从收件箱中的最后一封电子邮件中下载附件 (xlsb)。
我有两个问题:
1 - 我需要更改它,以便它首先查找第一封电子邮件(最新的)。
2 - 它应该只查找主题包含以下词的电子邮件:DOCUMENT_APP(名称各不相同,但其中始终包含 document_app,因此需要使用通配符)
这是我的代码,它查找最旧的电子邮件并保存 xlsb 附件文件(忽略主题):
Sub DownloadAttachmentFirstEmail()
Application.StatusBar = False
Application.StatusBar = "Downloading email"
Application.DisplayAlerts = False
Dim oOlAp As Object, oOlns As Object, oOlInb As Object
Dim oOlItm As Object, oOlAtch As Object
'~~> New File Name for the attachment
Dim NewFileName As String
NewFileName = AttachmentPath & Format(Date, "DD-MM-YYYY") & "-"
'~~> Get Outlook instance
Set oOlAp = GetObject(, "Outlook.application")
Set oOlns = oOlAp.GetNamespace("MAPI")
Set oOlInb = oOlns.GetDefaultFolder(olFolderInbox)
For Each oOlItm In oOlInb.Items
'~~> Check if the email actually has an attachment
If oOlItm.Attachments.Count <> 0 Then
For Each oOlAtch In oOlItm.Attachments
If Right(oOlAtch.Filename, 4) = "xlsb" Then
oOlAtch.SaveAsFile NewFileName & oOlAtch.Filename
MsgBox "SAVED"
Exit Sub
End If
Next
Else
End If
Next
' DO SOMETHING
End Sub
对于问题号。 2、我尝试改变:
For Each oOlItm In oOlInb.Items
到:
For Each oOlItm In oOlInb.Items.Restrict("[Subject] = ""*DOCUMENT_APP*""")
它没有给出错误,它只是退出子。
【问题讨论】:
-
msdn.microsoft.com/en-us/VBA/Outlook-VBA/articles/… "无法执行“包含”操作。例如,您不能使用查找或限制来搜索主题字段中包含特定单词的项目。"跨度>
-
天哪!那是个坏消息,那么,有解决办法吗?仅从特定发件人处查找?或者只查看包含“DOCCUMENT_APP.xlsb”的附件文件??
-
链接的文章描述了替代方案。
-
谢谢,我可以做到:strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%草图%'"