Excel 阻止cmd start命令以文件形式打开包含空格的参数
我有一个Excel宏,当以以下方式传递时,它接受命令行参数: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
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"