2017-12-11 17 views
1

32 비트 Excel에서 제대로 작동하는 코드가 있습니다. 코드가 64 비트에서 작동하지 않습니다. 64 비트 Excel에서 붙여 넣기 선언을 복사 할 때 오류가 발생하지 않습니다. 선언문이 빨간색이고 인식되지 않습니다.64 비트 OS에서 명령 줄 인수

이 코드는 명령 줄 인수를 검색하는 데 사용됩니다. 내가 실행 한 경우

그래서 예를 들어 : 엑셀 시작 "C를 : \ GD \ 에듀 최근 \ ParametersProject.xlsm"/p/"kjh%dg.pdf " 그것이 내가 구문 분석하고를 결정할 수있는 문자열을 반환 입력 매개 변수 : "C : \ GD \ Edu Recent \ ParametersProject.xlsm"/p/"kjh%dg.pdf "

어떻게 변경합니까? 여기

코드입니다 :

'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 

그리고 ...

'I declared this code in the Workbook open: 

Sub workBook_open() 
    MsgBox Parameters.CmdLineToStr 
End Sub 

답변