VBA Excel命令不支持';使用Shell调用时不起作用,但直接复制粘贴到cmd时起作用

VBA Excel命令不支持';使用Shell调用时不起作用,但直接复制粘贴到cmd时起作用,excel,vba,shell,cmd,Excel,Vba,Shell,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

我正试图用输入文件运行一个程序

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有什么问题?

文档中说:

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

它给出了一个小例子:

Sub test()
    Dim RetVal
    Dim command As String
    command = "C:\WINDOWS\CALC.EXE"
    RetVal = Shell(command, 1)
End Sub
这里我得到了
错误53:找不到文件
,因为Windows 7上的calc位于其他地方。你知道这个错误吗

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

但是,引用正确路径的一部分将抛出错误:

    command = "C:\WINDOWS\""SYSTEM32""\CALC.EXE"
但引用完整路径并不能:

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

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

是的,我得到相同的错误53。你为什么问我?我引用了程序文件,因为文件夹名称中有空格。我引用它只是为了尝试。似乎只有在任何部分有空格时,它才接受完整路径周围的引号。因此,仅引用带有空格的部分会导致错误。