【发布时间】: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