【发布时间】:2017-10-23 18:32:32
【问题描述】:
我通常不在 VBA 中编写代码,但需要创建一个 VBA 宏,我可以从中运行一个执行 python 脚本的 .bat 文件。我已经能够做到这一点,但是由于程序在 excel 环境之外运行,我需要确定 .bat 文件何时完成,并向 excel 环境返回一条消息。 这是我目前所拥有的:
Shell ("CMD.EXE /c c:\IndexTrader\run_file\index_trader.bat")
一旦上述 .bat 文件运行,我如何才能在 excel 环境中打印一条消息,表明 .bat 文件已执行。 如果我在 .bat 文件命令之后运行顺序代码(参见上面的代码),由于 .bat 文件是在 excel 环境之外执行的,因此即使 .bat 文件尚未完成,在此命令之后运行的任何顺序代码也会运行。 有没有办法输出一条消息或参数表明.bat文件已执行,然后只执行VBA中的任何顺序代码。
【问题讨论】:
-
1) 让
bat文件在执行后创建一个文件(即-.txt)。然后您可以使用filesystemobject在继续代码之前检查该文件是否存在。 Bat 文件也可以在代码开头销毁该文件 2) 如果您知道 python 脚本最多只需要 10 秒左右,您可以使用 VBAApplication.Wait来保持执行,或SleepAPI。 -
@ScottHoltzman 方法确实有效(之前尝试过),但只是另一个想法,让 bat 程序设置系统环境变量怎么样,然后让 vba 等到
environ变量设置为具体值。没试过,不过我觉得和创建文件是一样的。 -
@Rosetta - 值得尝试一下 :)
-
@ScottHoltzman 在我看来我的想法只是一个死胡同...stackoverflow.com/questions/171588/…
标签: python excel batch-file vba