Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 运行打开MessageBox的宏_Excel_Powershell_Scripting_Vba - Fatal编程技术网

Excel 运行打开MessageBox的宏

Excel 运行打开MessageBox的宏,excel,powershell,scripting,vba,Excel,Powershell,Scripting,Vba,我正在通过Powershell调用Excel文档中的宏 要调用宏,我必须运行一个命名的宏并在run中调用它。但是,当宏被调用并成功完成时,将出现一个MessageBox。据我所知,这个消息框是唯一一个确定过程是否成功完成的方法 我无法控制删除消息框的能力。powershell脚本必须等待宏完成 从文档中可以看出:for this没有为这种情况提供选项,或者看起来是这样 我可以使用的其他选项:(但我不确定如何达到取消messagebox的程度) Excel文档中可以通过Powershell插入代码

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

要调用宏,我必须运行一个命名的宏并在run中调用它。但是,当宏被调用并成功完成时,将出现一个MessageBox。据我所知,这个消息框是唯一一个确定过程是否成功完成的方法

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

从文档中可以看出:for this没有为这种情况提供选项,或者看起来是这样

我可以使用的其他选项:(但我不确定如何达到取消messagebox的程度)

  • Excel文档中可以通过Powershell插入代码
  • 可以在文档内存空间内更改选项

  • 是否可以异步运行宏并检查宏的执行情况?

    有几种复杂的方法可以做到这一点

    1) 调用Excel应用程序的另一个实例并使用该实例运行宏。那你怎么知道它是否完成了?通过引用将全局变量传递给它。并使用
    OnTime
    功能每隔几秒钟检查一次是否完成

    下面给出了调用另一个excel实例的示例:

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


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

    你没有权限编辑宏?如果您只需添加一个参数,允许它以静默方式运行,而不弹出消息框,那么这会更简单。如果您的powershell脚本完成得令人满意,您难道不知道它是否正常吗?嗯。。我不会这么做,因为messagebox冻结了正在运行的宏,而powershell正在等待该框消失。好的。但是为什么不能从VBA宏中删除消息框(或用户表单)?传入的文件无法修改。我无法控制这一点。OP指的是
    Powershell
    ,而不是
    VBA
    (1)或
    vbs
    (2)谢谢@brettdj,是的,但如果问题是特定于需求而非特定于Powershell的,则可以使用此解决方案。此外,与VBA宏异步通信的方式可用于特定用例。还有@monksy,如果它与你的问题无关,我很乐意把它取下来。Tks