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

时间:2015-04-10 15:13:03

标签: excel vba email

我有以下从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职业选手,这是我的第一篇文章,所以希望你们能指出我正确的方向或提出替代方案。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我建议在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 "Object Model Guard" Security Issues for Developers