Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 打开一个命令窗口并从中执行一系列命令_Excel_Command_Vba_Spring Batch - Fatal编程技术网

Excel 打开一个命令窗口并从中执行一系列命令

Excel 打开一个命令窗口并从中执行一系列命令,excel,command,vba,spring-batch,Excel,Command,Vba,Spring Batch,我想打开一个命令窗口/提示符,例如cmd.exe,并向其传递单行命令,等待命令完成,然后向其传递另一个命令,直到完成,然后关闭命令窗口 考虑到这一点,我想我可以构建一个多行命令列表,并将其传递到命令窗口,让它执行,在命令执行完毕后继续使用VBA。然而,我更喜欢我的打开请求,因为它将显示如何在打开的窗口中实际完成 我发现了一些情况,其中一个命令运行,然后关闭窗口,但没有得到重用: 我不知道这些是否适合我。我从来没有需要运行命令窗口并从Excel内部执行多个命令,因此这对我来说是一个新的学习机会。

我想打开一个命令窗口/提示符,例如cmd.exe,并向其传递单行命令,等待命令完成,然后向其传递另一个命令,直到完成,然后关闭命令窗口

考虑到这一点,我想我可以构建一个多行命令列表,并将其传递到命令窗口,让它执行,在命令执行完毕后继续使用VBA。然而,我更喜欢我的打开请求,因为它将显示如何在打开的窗口中实际完成

我发现了一些情况,其中一个命令运行,然后关闭窗口,但没有得到重用:


我不知道这些是否适合我。我从来没有需要运行命令窗口并从Excel内部执行多个命令,因此这对我来说是一个新的学习机会。

这似乎不可能以我想要的方式实现,但我有一个解决方法,基本上可以给我相同的最终结果,请参见。

与前面的回答相反,这是可能的。使用字符串变量生成命令列表。使用vbNewLine跟随每个命令。然后将整个字符串变量传递给命令shell。唯一的限制是,您可能会达到命令字符串变量的字符串长度限制。在这种情况下,将它放在一个循环中,并为循环中的每个迭代构建一个单独的命令字符串。下面是一个简短的示例,它创建一个shell命令来调用一个可执行jar,然后在jar完成后暂停。它还显示命令状态,如果仅将一个命令传递给shell,则最好使用该状态。vbNewLine是关键,也是您需要的

Dim javaCmd As String
Dim javaShell
Set javaShell = CreateObject("Wscript.shell")
javaCmd = "java -jar someSpringjava.jar context.xml inputfile=" & inputfile & vbNewLine & pause
Dim cmdRet As Integer
cmdRet = javaShell.Run(javaCmd, 1, True)
Dim statusMsg = "Return code: & cmdRet
iRet = MsgBox(statusMsg, vbOkOnly)

我们使用这种技术从Excel调用我们的工作例程。

这不能满足我在开头一段中的要求。我还使用了vbCrLf,使用sTemp=objWSshell在shell中运行。RunCommand:=%comspec%/c&sCommand,windowStyle:=5,waitOnReturn:=True