我想从Outlook 2010下载附件。包含附件的邮件主题不断变化。主题名称采用以下格式:
“2010(随机名称)Sigma报告”
“2011(随机名称)Sigma报告”
现在我想下载第一份Sigma报告。我该如何连接到Outlook并下载它?以下是我到目前为止使用的代码。我在第一个'For'语句中遇到类型不匹配。
Sub Attachment_Click()
Const olFolderInbox As Integer = 6
Const AttachmentPath As String = "D:\Documents and Settings\rahul.baskaran\Desktop\"
Dim OApp As Object, ONS As Object, OInb As Object
Dim OItem, OAtch As Object
Dim OFind As Object
Dim OMail As Object
Set OApp = GetObject(, "Outlook.application")
Set ONS = OApp.GetNamespace("MAPI")
Set OInb = ONS.GetDefaultFolder(olFolderInbox)
Set OMail = OInb.Items
Set OFind = OMail.Find("[Subject] = ""*Sigma Report*""")
For Each OItem In OInb.Items.Restrict(OMail)
If OItem.Attachments.Count <> 0 Then
For Each OAtch In OItem.Attachments
'~~> Download the attachment
OAtch.SaveAsFile AttachmentPath & OAtch.Filename
Exit For
Next
Else
MsgBox "The mail doesn't have an attachment"
End If
Exit For
Next
End Sub
如果我删除了.Restrict(OMail)
部分,那么代码工作正常,但即使邮件中存在附件,它也始终处于“其他”状态。有人可以帮帮我吗?
答案 0 :(得分:1)
您错误地使用Restrict - 该函数采用单个参数即字符串过滤器。不幸的是,根据msdn参考,
无法执行“包含”操作。例如,您无法使用“查找”或“限制”来搜索“主题”字段中具有特定单词的项目。相反,您可以使用AdvancedSearch方法,也可以循环浏览文件夹中的所有项目,并使用InStr函数在字段中执行搜索。