【问题标题】:How to download excel attachment with the subject ending with a specific text and then open the attachment for editing?如何下载主题以特定文本结尾的excel附件,然后打开附件进行编辑?
【发布时间】:2013-11-27 15:31:22
【问题描述】:

我想从 Outlook 2010 下载附件。包含附件的邮件主题不断变化。主题名称格式如下:

“2010(随机名称)西格玛报告”

“2011(随机名称)西格玛报告”

现在我想下载第一份 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) 部分,那么代码可以正常工作,但即使邮件有附件,它也总是会进入“else”状态。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 为什么不创建一个规则然后关注THIS
  • 谢谢.. 我使用该解决方案的一部分成功提取了文件。

标签: vba excel


【解决方案1】:

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

没有办法执行“包含”操作。例如,您不能使用“查找”或“限制”来搜索主题字段中包含特定单词的项目。相反,您可以使用 AdvancedSearch 方法,或者您可以遍历文件夹中的所有项目并使用 InStr 函数在字段中执行搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2016-07-08
    相关资源
    最近更新 更多