首页 > 解决方案 > 如何使用 VBA 自动单击公司安全弹出窗口上的“发送”按钮

问题描述

我在 Excel VBA 模块中有以下代码:

With OutlookMail
    .To = "mickey.mouse@disney.com"
    .CC = ""
    .BCC = ""
    .Subject = "Ride Review"
    .Body = "Please make the Turbo Spinner an express-lane ride."
    .Attachments.Add Path
    .Send
    SendKeys "{Enter}"
end With 'OutlookMail

该代码工作正常,并将按预期发送电子邮件。但是,在.Send执行命令时,我公司要求员工填写一个电子邮件安全工具,然后单击一个额外的“发送”/“取消”按钮(“发送”默认突出显示)。(注意:这不是一个包含数百个帖子的警告弹出窗口)。

当此窗口弹出时,问题就变成了我无法离开弹出窗口(即,当您尝试单击桌面的另一个区域时,它会保持焦点并发出可听见的“叮”声并闪烁弹出窗口) .

因此,我无法在 VBA 中使用 SendKeys 函数,因为 Excel 不再是活动窗口,并且我无法继续单步执行代码,直到我用鼠标单击“发送”/“取消”。事实上,SendKeys "{Enter}"在我单击“发送”/“取消”并继续单步执行代码(如预期的那样)后,该命令在模块代码中放置了一个返回。

我在网上搜索过类似的东西无济于事。鉴于代码在单击“发送”/“取消”之前停止运行,我不确定是否有办法使用 Excel VBA 执行此操作,但也许有一种方法可以强制执行此操作。

标签: excelvbaoutlookpopup

解决方案


看来您正在处理一个模态对话框窗口。当它显示给用户时,代码停止运行,只有在关闭后才能恢复。一种可能的解决方案是开发一个外部实用程序(应用程序),它可以定期扫描 Outlook 窗口并以编程方式单击按钮。Microsoft Active Accessibility可以帮助您。但这不是一项微不足道的任务。

Outlook 对象模型没有为此提供任何东西。您必须使用 Windows API 才能完成工作。


推荐阅读