我正在尝试运行VBA脚本,该脚本将使用从Excel电子表格中检索的参数执行特定的shell程序。
我想在spredsheet中为n行执行n次命令,但是将它全部放在一个cmd.exe窗口中。这可以实现吗?
我正在做这样的步骤:
1.创建shell对象:
Set wsh = VBA.CreateObject("WScript.Shell")
2.迭代电子表格中的所有行并调用每个行:
wsh.Run("Command with row specific args", 1, true)
结果我为n个已处理的行打开了n个控制台窗口。 有什么方法可以避免吗?
帮助表示赞赏。
答案 0 :(得分:3)
您没有提供太多细节,但解决方案可能是使用您需要的所有参数构建批处理(.bat)文件(与写入任何其他文本文件没有区别),将其保存在某处然后运行它在一次调用cmd.exe中。然后你可以删除该文件。
首先打开输出文件:
Dim fn As Long
fn = FreeFile
Open "filename.bat" For Output As #fn
然后迭代你的范围,而不是为每个启动cmd.exe,写入你的打开文件:
Print #fn "command with row specific args"
然后关闭您的文件并运行它:
Close #fn
Set wsh = VBA.CreateObject("WScript.Shell")
wsh.Run("filename.bat", 1, true)
然后你可以丢弃文件:
Kill "filename.bat"