使用Shell调用时,VBA Excel命令不起作用,但在直接复制粘贴到cmd时有效

时间:2016-04-14 13:57:37

标签: excel vba shell excel-vba cmd

我正在尝试使用输入文件运行程序。

Dim command, cfx5_exe_path, cfx_file_folder, cfx_file_name As String

command = cfx5_exe_path & " -cfx " & cfx_file_folder & cfx_file_name & ".cfx "
Shell command

所以它给出了一个错误。 调试器中命令的结果值是

"c:\"Program Files"\"ANSYS Inc"\v150\CFX\bin\cfx5pre.exe -cfx c:\Users\Username\Arbeit\Programming\A321_tail_flow.cfx"

如果我将其直接复制粘贴到windows cmd 中并删除第一个/最后一个引号,那么它可以正常工作。 Shell 有什么问题?

1 个答案:

答案 0 :(得分:1)

文档说:

  

如果Shell函数成功执行了命名文件,它将返回已启动程序的任务ID。任务ID是标识正在运行的程序的唯一编号。如果Shell函数无法启动指定的程序,则会发生错误。

它给出了一个小例子:

Sub test()
    Dim RetVal
    Dim command As String
    command = "C:\WINDOWS\CALC.EXE"
    RetVal = Shell(command, 1)
End Sub

这里我得到Error 53: file not found因为Windows 7上的计算器位于其他地方。你有这个错误吗?

提供calc的正确路径启动程序并返回唯一ID。

但是,引用正确路径的一部分会引发错误:

    command = "C:\WINDOWS\""SYSTEM32""\CALC.EXE"

但引用完整路径不是:

    command = """C:\WINDOWS\SYSTEM32\CALC.EXE"""

因此,您必须删除所有嵌入的引号,然后引用完整路径一次。