Vba Outlook邮件项目上的附件

Vba Outlook邮件项目上的附件,vba,outlook,attachment,Vba,Outlook,Attachment,我正在对邮箱中的项目执行循环,然后使用:Set Append=mailitem.attachments提取它们的附件 然后,当邮件与.Attachments.Add Append一起发送时,我发现该对象不支持此方法错误 在我看来,Attachments.Add不接受对象,只接受字符串。但这对我来说毫无意义 还有别的办法吗 我的部分代码: 程序的一部分 i = 0 For Each Msg In olItms If Msg.Class = olMail Then If

我正在对邮箱中的项目执行循环,然后使用: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
以及发送电子邮件功能

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

附件.Add仅接受字符串文件名或Outlook项目,如MailItem


如果您想要一些有意义的东西,您可以尝试:-它允许将文件名、url、另一个附件、邮件、历史记录作为参数传递给Attachments.Add。

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