0
我有一個Excel宏以下列方式傳遞時所接受的命令行參數的參數:防止CMD啓動命令,打開包含空格的文件
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」。
有沒有辦法來防止這些錯誤出現,同時保留傳遞參數相同的語法和邏輯?
感謝您的回答。當按照您的建議使用引號時,參數不會發送到宏。我已將宏代碼添加到問題中。 – Bobby