VBA:来自一个cmd.exe的多个命令

时间:2013-10-03 21:56:15

标签: excel vba excel-vba

我正在尝试运行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个控制台窗口。 有什么方法可以避免吗?

帮助表示赞赏。

1 个答案:

答案 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"