【问题标题】:Attachments on Outlook mailitemOutlook 邮件项上的附件
【发布时间】:2014-02-18 10:55:36
【问题描述】:

我正在对邮箱中的项目进行循环,然后使用:Set Append = mailitem.Attachments 提取它们的附件。

然后,当使用.Attachments.Add Append 发送消息时,我收到对象不支持此方法 错误。

在我看来Attachments.Add 不接受对象,只是一个字符串。但这对我来说没有任何意义。

还有其他方法吗?

我的部分代码:

部分程序

i = 0

For Each Msg In olItms

    If Msg.Class = olMail Then

        If InStr(1, Msg.Subject, Trackbox.Value) > 0 Then

        ReDim Preserve MyArray(i)

        If Msg.Attachments.Count > 0 Then Set Append = Msg.Attachments

还有 Send_Email 功能

Function SendEmail(Who As String, About As Variant, BodyText As Variant, Optional CopyTo As String, Optional HCopyTo As String, _
Optional App As Object)

Set Out = GetObject(, "Outlook.Application")

Set NewMsg = Out.CreateItem(olMailItem)

With NewMsg

    .To = Who
    .CC = CopyTo
    .BCC = HCopyTo
    .Attachments.Add App
    .BodyFormat = olFormatHTML
    .Subject = About
    .HTMLBody = BodyText
    .Send


End With


End Function

【问题讨论】:

  • 您可以将附件提取到特定文件夹,获取路径,然后使用Attachments.Add 附加它。不是那么难,但也不是那么好。
  • 但是为什么不好呢?这种方法会出错吗?
  • 假设您正在处理具有不同扩展名的文件。有些是.zip,有些是.7z,有些甚至可能是.mp3。由于您要保存它们,因此您必须提供文件扩展名。如果您弄错了这部分,当您将文件保存为另一种格式时,您可能会不可撤销地损坏文件。一种解决方法是尝试获取扩展名并将其正确保存。其实是可行的我只是不觉得它那个好。我使用相同的方法,但我只保存 .zip 文件,提取它们,应用格式,然后重新压缩并将它们发送回来,所以我很容易(我认为)。 :)
  • 谢谢,伙计!这将是许多不同的扩展。你曾经使用过救赎吗?做这种事靠谱吗?
  • 如果你是唯一一个使用它的人,我不明白为什么它不可靠。我为什么这么说?问题是,我个人必须一直与很多人共享我的文件。这意味着如果我有一些需要安装并且不使用“本机”MS Office 的东西,那么它可能无法在另一台计算机上运行。对于一项特定的工作,我使用 Selenium VBA,由于它只安装在我的 PC 中,我无法分发使用它的代码。但就个人而言,我建议你使用它。扩展的 MAPI 看起来很强大,我认为它解决了 Outlook 中的许多“假设”场景。 :)

标签: vba outlook attachment


【解决方案1】:

Attachments.Add 只接受字符串(文件名)或 Outlook 项目,例如 MailItem。

如果您想要一些有意义的东西,您可能想尝试Redemption :-) - 它允许将文件名、url、另一个附件、消息、IStorage 作为参数传递给 Attachments.Add。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多