2017-02-12 17 views
1

VBScript에 다음 코드를 실행하려고하지만 마지막 명령문을 컴파일하지 않습니다. VBScript은 명명 된 인수를 허용하지 않으므로입니까?VBScript는 함수 호출에서 명명 된 인수를 허용합니까?

Filename_Argument = WScript.Arguments(0) 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
Set objWorkbook = objExcel.Workbooks.Add() 
Workbooks.OpenText Filename:=Filename_Argument, Origin _ 
     :=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ 
     xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _ 
     , Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo _ 
     :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _ 
     Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True 

답변

5

VBScript는 프로 시저 및 함수에 명명 된 인수를 지원하지 않습니다. 당신은 위치에 인수 목록을 변경해야합니다

Workbooks.OpenText Filename_Argument, xlMSDOS, ... 

VBScript를 또한 엑셀 상수 (xlMSDOS을 같은) 인식하지 않습니다, 당신이 그들의 숫자 값으로 그들을 그들을보고 교체 할 필요가 있도록 :

Workbooks.OpenText Filename_Argument, 3, ... 

그리고 당신은 사용해야 명시 적으로 객체 참조 : 위치 순서로

엑셀 매크로 레코더의 이름은 박 았
objExcel.Workbooks.OpenText Filename_Argument, 3, ... 

인수, 그래서 당신은 단지 매개 변수 n을 삭제할 수 있습니다 ames. 지정할 필요가없는 선택적 매개 변수는 다음과 같이 생략 할 수 있습니다 (예 :

x = Function(Var1, , Var3) 
'    ^
'     `- omitted optional 2nd parameter 
+0

) downvoter에게 이것이 잘못된 대답이라고 생각한다면 직접 답변을 추가하지 않으시겠습니까? – CJ7

+0

... 또는 적어도 본질적으로 올바른 대답에 대해 잘못 생각하는 것을 설명하십시오. –

+2

명명 된 상수를 유지하고 'Const'를 사용하여 선언하는 것이 더 좋으므로 리터럴 숫자 값을 사용하는 대신 Const xlMSDOS = 3이됩니다. – Lankymart