我想在Outlook 2014中自动化一些基本操作,因此我在VBA中创建了一个宏。但是,如果脚本执行期间发生任何错误,我需要发送电子邮件,并且我想绕过Outlook的确认消息(当您要发送带有宏的邮件时出现的弹出窗口)。
Private Sub sendEmailError()
Dim Email As Outlook.Application
Dim EmailMsg As Outlook.MailItem
Dim Dest As Outlook.Recipient
Set Email = CreateObject("Outlook.Application")
Set EmailMsg = Email.CreateItem(olMailItem)
Set Dest = EmailMsg.Recipients.Add("mail@mail.com")
EmailMsg.Subject = MessageSubject
EmailMsg.Body = MessageBody
EmailMsg.Display
SendKeys "^{ENTER}", True
End Sub
我认为“ EmailMsg.Display”将焦点放在消息框上,然后,由于sendkey,我可以执行发送电子邮件的快捷方式。但是焦点并没有集中在消息框上,并且在宏结束后在我的脚本中完成了control + key快捷键的操作。
谢谢您的帮助!
答案 0 :(得分:1)
您可能可以覆盖该提示,但是从定义上讲,您不应该这样做,我的猜测是,Microsoft可能已采取了一些安全措施来阻止您这样做。该提示旨在确保用户可以通过宏将其电子邮件弄乱,从而避免用户误以为是,它可以使宏仅代表用户单击“确定”。
您可以做的是进入Outlook信任中心,然后在“程序访问”选项卡上,将其设置为“从不警告我有关可疑活动”。这将永久删除提示。
答案 1 :(得分:0)
我知道它不是您想要的,但是
EmailMsg.Send
代替
EmailMsg.Display
将立即发送
答案 2 :(得分:0)
带有额外的警告消息,它将看起来像这样:
Private Sub sendEmailError()
Dim Email As Outlook.Application
Dim EmailMsg As Outlook.MailItem
Dim Dest As Outlook.Recipient
Set Email = CreateObject("Outlook.Application")
Set EmailMsg = Email.CreateItem(olMailItem)
Set Dest = EmailMsg.Recipients.Add("mail@mail.com")
EmailMsg.Subject = MessageSubject
EmailMsg.Body = MessageBody
EmailMsg.Send
SendKeys " "
End Sub
答案 3 :(得分:0)
您确实需要处理安全提示。请参阅http://www.outlookcode.com/article.aspx?id=52,以获取选项列表。本质上,它要么是在计算机上安装最新的AV应用程序(然后Outlook将不会显示提示),要么使用诸如Redemption或Outlook Security Manager之类的产品。
答案 4 :(得分:0)
谢谢大家的回应!
我发现了如何在没有Outlook发出警告的情况下发送电子邮件。我使用Windows的CDO库通过SMTP发送电子邮件,一切正常。
非常感谢您!