excel - 如何使用 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 执行此操作,但也许有一种方法可以强制执行此操作。
解决方案
看来您正在处理一个模态对话框窗口。当它显示给用户时,代码停止运行,只有在关闭后才能恢复。一种可能的解决方案是开发一个外部实用程序(应用程序),它可以定期扫描 Outlook 窗口并以编程方式单击按钮。Microsoft Active Accessibility可以帮助您。但这不是一项微不足道的任务。
Outlook 对象模型没有为此提供任何东西。您必须使用 Windows API 才能完成工作。
推荐阅读
- javascript - 如何在多维数据集js中根据用户名获取数据
- python - PuLP 不适用于一个列表,但适用于另一个列表。这两者有什么区别?
- if-statement - 如何使用基于 Google 表格中的列表的 2 层数据验证来切换黑白查询
- react-native - React-Native bottomTabNavigation,中间有大按钮
- java - 类似于 IntStream 的 Java 静态构建
- python - Mac上的Python pip安装不起作用
- latex - 在 Rmarkdown 和 beamer 中发现代码块
- c++ - 将阴影贴图添加到封闭源单通道固定功能管道 OpenGL 1.x 游戏
- javascript - Promise.prototype.catch 如何在 .then 链的末尾接收被拒绝的 Promise?
- python - VS Code Python 调试导入的模块