2017-12-11 4 views
1

Ich habe Code, der auf 32-Bit-Excel funktioniert. Der Code funktioniert nicht auf 64-Bit-Excel. Wenn ich Paste-Deklarationen in 64-Bit-Excel kopiere, wird kein Fehler ausgegeben. Die Deklarationen sind in ROT und werden nicht erkannt.Befehlszeilenargumente in 64 Bit OS

Der Code wird zum Abrufen von Befehlszeilenargumenten verwendet.

So zum Beispiel, wenn ich lief: Excel starten "C: \ GD \ Edu Recent \ ParametersProject.xlsm" /p/"kjh%dg.pdf“ es würde Zeichenfolge zurückgeben, die ich nicht analysieren und bestimmen die Eingabeparameter: "C: \ GD \ Edu Letzte \ ParametersProject.xlsm" /p/"kjh%dg.pdf "

Wie würde ich die Verschiebung machen? Hier

ist der Code:

'I declared this code in a module called Parameters: 

Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineW"() As Long 
Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long 
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (MyDest As Any, MySource As Any, ByVal MySize As Long) 


Public Function CmdLineToStr() As String 

' 
' Returns the command line in the call to Excel 
' 
Dim Buffer() As Byte 
Dim StrLen As Long 
Dim CmdPtr As Long 

CmdPtr = Parameters.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 
    CmdLineToStr = Buffer 
    End If 
End If 

End Function 

Und ...

'I declared this code in the Workbook open: 

Sub workBook_open() 
    MsgBox Parameters.CmdLineToStr 
End Sub 

Antwort

Verwandte Themen