运行打开MessageBox的宏

时间:2014-07-07 21:01:00

标签: excel excel-vba powershell scripting vba

我通过Powershell在Excel文档中调用宏。

要调用宏,我必须运行一个命名宏并在运行中调用它。但是,当调用宏并成功完成时,将出现一个MessageBox。据我所知,此消息框是查明进程是否已成功完成的唯一方法。

我无法控制删除消息框的能力。 powershell脚本必须等待宏完成。

从文档中:documentation为此不提供此选项的选项,或者显示出来。

我可以使用的替代选项:(但我不确定如何解决消息框被解雇的问题)

  1. Excel文档可以通过Powershell
  2. 在其中插入代码
  3. 可以在文档存储空间中更改选项
  4. 是否可以异步运行宏并检查宏的执行情况?

1 个答案:

答案 0 :(得分:1)

有一些令人费解的方法可以做到这一点。

1)调用Excel应用程序的另一个实例并使用它运行宏。那你怎么知道它是否已经完成了?您将全局变量按引用传递给它。如果完成与否,使用OnTime功能可以每隔几秒检查一次。

此处给出了调用另一个excel实例的示例:Stop VBA-Script from "freezing" while sending MDX-Query

2)您可以将脚本存储为.VBS文件。然后调用shell来运行VB脚本,并再次检查一些传递引用变量。

3)使用隐藏的工作表作为缓冲区,一旦异步代码完成运行,该缓冲区将被写入特定位置。同样,您需要一些聪明的OnTime编程来自动运行轮询服务......更重要的是,要停止运行它!