Excel 阻止cmd start命令以文件形式打开包含空格的参数

Excel 阻止cmd start命令以文件形式打开包含空格的参数,excel,vba,cmd,Excel,Vba,Cmd,我有一个Excel宏,当以以下方式传递时,它接受命令行参数: start excel.exe c:\cmdr.xlsm -param1 -param2 -param3 宏 Sub Auto_Open() Debug.Assert False Dim parameters As Variant Dim i As Integer parameters = CmdLineToVariant For i = 1 To UBound(parameters) MsgBox ("Your parame

我有一个Excel宏,当以以下方式传递时,它接受命令行参数:

start excel.exe c:\cmdr.xlsm -param1 -param2 -param3

Sub Auto_Open()
Debug.Assert False

Dim parameters As Variant
Dim i As Integer

parameters = CmdLineToVariant

For i = 1 To UBound(parameters)
MsgBox ("Your parameter " & i & " was " & parameters(i))
Next i

End Sub

Public Function CmdLineToVariant() As Variant

Dim Buffer() As Byte
Dim StrLen As Long
Dim CmdPtr As Long
Dim line As String
Dim lineSplitted As Variant
Dim parameters As String
Dim i As Integer

CmdPtr = GetCommandLine()
If CmdPtr > 0 Then
  StrLen = lstrlenW(CmdPtr) * 2
  If StrLen > 0 Then
    ReDim Buffer(0 To (StrLen - 1)) As Byte
    CopyMemory Buffer(0), ByVal CmdPtr, StrLen

    line = Buffer
    lineSplitted = Split(line, "-")

    CmdLineToVariant = lineSplitted
  End If
End If

End Function
当参数的名称中没有空格时,它可以正常工作,但是当有像这里这样的空格时,我会遇到一些恼人的错误

start excel.exe c:\cmdr.xlsm -param 1 -param 2 -param 3
在我的宏成功完成后,我会出现诸如“1.xlsx找不到”、“2.xlsx找不到”和最后“3.xlsx找不到”之类的错误

有没有一种方法可以防止出现这些错误,同时保留传递参数的相同语法和逻辑?

一般来说,
“引用参数”

start
有一个怪癖,第一个
引用的参数“
被用作窗口标题

使用

或者可能

start "" excel.exe c:\cmdr.xlsm -"param 1" -"param 2" -"param 3"

(未测试-OP未提供有关参数的指示)。

谢谢您的回答。按照您的建议使用引号时,参数不会发送到宏。我已经在问题中添加了宏代码。
start "" excel.exe c:\cmdr.xlsm -"param 1" -"param 2" -"param 3"