如何从Excel传递参数时执行batch file

我想运行一个batch file放在一个特定的path。 该文件需要用户input,我希望从Excel单元格传递参数。 Excel中batch file的执行应该通过使用单击命令button来实现。

我是VBA新手。 我试了下面的代码,但点击button什么都没有发生。

Private Sub CommandButton2_Click() sid = Excel.Worksheets("Sheet1").Range("I8").Value user = Excel.Worksheets("Sheet1").Range("I9").Value Password = Excel.Worksheets("Sheet1").Range("I10").Value msg = "hi" Shell ("CMD.EXE /c C:\Users\shashank.b03\Desktop\test_CMD.bat" & sid &" "& user &" "& password &" ") End Sub 

这里是我已经testing的一个例子,应该适合你。 它只是调用shell命令并传递一个命令string。

你可以改变你的batch file在string中的path,如果你不想在显示shell窗口的时候使用vbHide而不是vbNormalFocus。

你只需要改变这一点,把单元格的值放到sid,user和passwordvariables中。

希望这可以帮助。

 Dim sid As String Dim user As String Dim password As String CommandString = "c:\test.bat" + " " + sid + " " + user + " " + password Call Shell("cmd.exe /c" & CommandString, vbNormalFocus) 

这里是使用shell的参数和batch file的一个更基本的例子。

将以下内容保存为test.bat

 set arg1=%1 echo HELLO %1! pause 

把这个代码放在一个button或Excel中的其他组件;

 Private Sub CommandButton1_Click() Dim sid As String sid = "Shashank" CommandString = "c:\test.bat" + " " + sid Call Shell("cmd.exe /c" & CommandString, vbNormalFocus) End Sub 

确保batch file保存的path与命令string中的path相同。

当这个运行时,你会看到variablessid中保存的string被传递到batch file中并被使用。 你应该能够从这里得到它的工作。

希望这可以帮助