使用 Excel VBA 回复文本并将其附加到电子邮件正文



我有以下从Excel运行的VBA代码:

Sub olReply()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem
Dim oReply As Outlook.MailItem
Dim objSelection As Outlook.Selection
Set objOL = CreateObject("Outlook.Application")
Set objSelection = objOL.ActiveExplorer.Selection
For Each objMsg In objSelection
    Set oReply = objMsg.Reply
    oReply.Body = "test" & objMsg.Body
    oReply.Display
Next
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
Set oReply = Nothing
End Sub

我正在尝试让此代码回复 Outlook 中的选定电子邮件,并将我自己的文本(上面的"测试")附加到电子邮件原始文本的顶部。

我已经搜索了一个解决方案,它应该非常简单,但运行此代码会产生"运行时错误'287':应用程序定义或对象定义的错误"。

在以下部分生成错误:

oReply.Body = "test" & objMsg.Body

。特别是在objMsg.Body上,当我使用F8逐步完成代码时。例如,如果我将其从objMsg.Body更改为objMsg.Subject,则代码运行良好,回复电子邮件,添加我自己的文本和原始电子邮件的主题行。

不确定我错过了什么,因为我不是 VBA 专业人士,这是我的第一篇文章,所以希望你们能为我指出正确的方向或提出替代方案。

提前谢谢。

我建议在Outlook中运行以下VBA宏:

Sub olReply()
 Dim objOL As Outlook.Application
 Dim objMsg As Outlook.MailItem
 Dim oReply As Outlook.MailItem
 Dim objSelection As Outlook.Selection
 Set objOL = Application
 Set objSelection = objOL.ActiveExplorer.Selection
 For Each objMsg In objSelection
  Set oReply = objMsg.Reply
  oReply.Body = "test" & objMsg.Body
  oReply.Display
 Next
 Set objMsg = Nothing
 Set objSelection = Nothing
 Set objOL = Nothing
 Set oReply = Nothing
End Sub

在这种情况下,您会收到任何错误吗?

否则,您会遇到标准的"对象模型保护"安全问题。有关详细信息,请参阅 Outlook 面向开发人员的"对象模型保护"安全问题。

最新更新