如何使用 VBA 自动点击公司安全弹出窗口上的 "SEND" 按钮

How to automate clicking a "SEND" button on a corporate security pop-up using 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 命令时,我的公司要求员工填写一个电子邮件安全工具,然后单击一个额外的“发送”/“取消”按钮(“发送”默认为突出显示)。 (注意:这不是一个有数百个 post 的警告弹出窗口)。

当这个 window 弹出窗口出现时,问题就出现了,我无法离开弹出窗口(即它保持焦点并发出可听见的 'ding' 噪音并在弹出时闪烁弹出窗口您尝试单击桌面的另一个区域)。

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

我在网上搜索过类似的东西,但无济于事。我不确定有没有办法用 Excel VBA 鉴于代码停止 运行 直到单击“发送”/“取消”,但也许有一个强制它的方法。

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

Outlook 对象模型没有为此提供任何东西。您将不得不使用 Windows API 来完成工作。