如何下载excel附件,主题以特定文本结尾,然后打开附件进行编辑?

时间:2013-11-27 15:31:22

标签: excel vba excel-vba

我想从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)部分,那么代码工作正常,但即使邮件中存在附件,它也始终处于“其他”状态。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您错误地使用Restrict - 该函数采用单个参数即字符串过滤器。不幸的是,根据msdn参考,

  

无法执行“包含”操作。例如,您无法使用“查找”或“限制”来搜索“主题”字段中具有特定单词的项目。相反,您可以使用AdvancedSearch方法,也可以循环浏览文件夹中的所有项目,并使用InStr函数在字段中执行搜索。