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