【问题标题】:VBScript: wait for Excel MsgBox, Click OKVBScript:等待 Excel MsgBox,点击 OK
【发布时间】:2013-02-06 19:46:49
【问题描述】:

我编写了一个 VBScript,它可以自动处理 Excel 工作簿的负载。

对于其中一些工作簿,在打开它们时会触发一个 MsgBox。此消息框正在中断自动化。

有没有办法在 VBScript 中监听这个 MsgBox 并在它弹出时“单击”确定?

【问题讨论】:

  • VBScript 还是 VBA?消息框旨在停止并强制用户进行交互。如果您只想要一条消息,您可能需要创建一个用户表单 (vba) 以允许您的脚本继续。忽略我,我虽然你想要消息框:D
  • 有一些选择,但对于任何类型的生产用途,它们往往很复杂、不优雅和/或不可靠。如果您让我们知道您想要绕过哪个消息框,那么我们可能会提供更多有用的建议。
  • @JamesSnell 从工作表中的 VBA 代码调用消息框。
  • 好吧,这是你的代码,如果你不想要 msgbox,那么最优雅的解决方案是在其他工作表中摆脱它,因为绕过它将是一个肮脏的世界黑客。 MsgBox 应该被禁止恕我直言。
  • @JamesSnell,我认为整个事情都是一个肮脏的黑客,不幸的是我无法对此做太多事情。我无法摆脱 MsgBox,但如果 VBA 以某种方式“知道”打开工作簿的是我的脚本而不是用户,我可以暂时禁用它。

标签: excel vbscript automation msgbox


【解决方案1】:

尝试使用这个包装器:

Application.DisplayAlerts = False
Application.Workbooks.Open ([your code])
Application.DisplayAlerts = True

这将抑制打开时的任何警告,例如兼容性问题等。

更新:

如果 MsgBox 是从工作簿代码生成的,请尝试使用:

Application.AutomationSecurity = msoAutomationSecurityForceDisable

如果使用后期绑定,这将起作用:

Application.AutomationSecurity = 3

阅读更多:http://support.microsoft.com/kb/886633

【讨论】:

  • 谢谢你的回答,我运气不好
  • @Griffin 你能提供相关的代码吗?或者只是在你的书中有在打开和触发 msgboxes 时运行的宏?
  • 不错的发现,但不幸的是,这仅适用于 Mac 版 Office。
  • @Griffin 我不这么认为:msdn.microsoft.com/en-us/library/office/… - 链接只是一个示例。无论如何,尝试一下只需几秒钟。
  • 发帖前试过了,我得到Variable is underfined: 'msoAutomationSecurityForceDisable', Code:800A01F4
猜你喜欢
  • 2012-11-17
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
相关资源
最近更新 更多