Excel宏发送邮件触发Runtime Error 287问题求助
解决Excel VBA发送邮件时的Runtime Error 287问题
Runtime Error 287通常由权限限制、Outlook安全拦截或代码常量未定义导致,以下是针对性解决步骤:
1. 修正代码中的未定义常量
你采用后期绑定创建Outlook对象,此时olMailItem常量无法被自动识别,需替换为对应数值0(Outlook中olMailItem的默认值即为0)。修改后的代码如下:
Sub Send_Email() Dim MyOutlook As Object Set MyOutlook = CreateObject("Outlook.Application") Dim MyMail As Object ' 替换olMailItem为数值0,规避常量未定义问题 Set MyMail = MyOutlook.CreateItem(0) MyMail.To = "notlistedpublicly" MyMail.Subject = Range("B6") & "Has completed his Skills Matrix" MyMail.Body = Range("B6") & "has completed his Skills Matrix. Please review" ' 若自动发送被拦截,可切换为显示邮件手动发送 ' MyMail.Display MyMail.Send End Sub
2. 调整Outlook安全设置
Outlook默认拦截程序自动发送邮件,可通过两种方式处理:
- 临时方案:将代码中的
MyMail.Send替换为MyMail.Display,邮件窗口会弹出,手动点击发送即可绕过拦截。 - 永久方案:打开Outlook「文件」→「选项」→「信任中心」→「信任中心设置」→「程序访问」,勾选「从不警告我可疑活动」(注意此设置会降低安全性,按需选择);或把Excel添加到信任应用列表。
3. 确认Excel宏权限
确保Excel允许运行宏:打开Excel「文件」→「选项」→「信任中心」→「信任中心设置」→「宏设置」,选择「启用所有宏」(仅在信任的文件中使用此设置,避免安全风险)。
内容的提问来源于stack exchange,提问作者Paul C.
相关产品推荐
相关产品推荐

