如何从Excel传递参数时执行批处理文件

时间:2017-01-20 04:47:30

标签: excel vba excel-vba batch-file

我正在尝试运行放置在特定路径的批处理文件。该文件需要用户输入,我希望从Excel单元格传递参数。在Excel中执行批处理文件应该通过使用单击命令按钮来实现。

我是VBA的新手。我尝试了下面的代码,但点击按钮没有发生任何事情。

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

1 个答案:

答案 0 :(得分:1)

这是我测试过的一个例子,应该可以正常使用。它只调用shell命令并传递一个命令字符串。

您可以更改批处理文件在字符串中的路径&如果您不想在运行此窗口时显示shell窗口,请使用vbHide而不是vbNormalFocus。

您只需稍微更改一下即可将单元格值放入sid,user和password变量中。

希望这有帮助。

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中的参数和批处理文件的更基本示例。

将以下内容另存为test.bat

set arg1=%1
echo HELLO %1!
pause

将此代码放在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

确保保存批处理文件的路径与命令字符串中的路径相同。

运行此命令时,您将看到变量sid中保存的字符串被传递给批处理文件并被使用。你应该可以从这里开始工作。

希望这有帮助