[Automation/All] vbscript에서 공용함수를 별도 파일에 보관하고 include 처럼 불러쓰기

Document created by nick_hong on Feb 4, 2014
Version 1Show Document
  • View in full screen mode

사용하는 script가 많아질 수록 공통으로 사용되는 자신의 함수를 공통 파일로 관리하면 편리합니다.

 

vbscript에서는 ExecuteGlobal 을 통해 문자열 변수에 보관된 내용을 실행할 수 있습니다. 특히 ExecuteGlobal 명령은 함수(function 또는 sub) 내에서 실행할 경우에 함수 정의가 포함된 내용이 포함되어 있더라도에러가 발생하지 않습니다.

 

 

아래의 예문은 하나의 예로, sTexts 변수에 서브루틴을 정의한 후, ExecuteGlobal을 통해 불러오고 서브루틴을 호출하도록 구성되었습니다.

 

이 내용을 .vbs 파일로 저장하여 실행하면 메시지 박스에 현재 시간을 표시하는 MySubRoutine이 호출됩니다.

 

 


Dim sTexts

sTexts = "Sub MySubRoutine" & vbCrLf & _
         "  MsgBox TimeValue(Time)" & vbCrLf & _
         "End Sub"

 

ExecuteGlobal sTexts

 

Call MySubRoutine

 

 

위의 예제에서 sTexts 를 정의하는 부분을 파일로부터 읽도록 처리하면 공용 파일을 만들어 마치 라이브러리를 include하는 것과 똑같은 효과를 줄 수 있습니다.

 

아래의 예와 같이 두 개의 파일을 만들어 위의 script를 실행하면 아래의 파일에서 정의한 서브루틴을 자유롭게 호출할 수 있게 됩니다.

 

 

실행할 script) 이 예제에서는 C:\WDIR\MyCommonVbs.vbs 에 아래의 MySubRoutine 정의 파일이 보관되어 있다고 가정합니다.

 


Include("C:\WDIR\MyCommonVbs.vbs")   ' The file that has MySubRoutine definition

Call MySubRoutine

Sub Include(sFilePath)
    Dim oFileSystem, oTextFile, sText
   
    Set oFileSystem = CreateObject("Scripting.FileSystemObject")
    Set oTextFile = oFileSystem.OpenTextFile(sFilePath, 1)   ' 1 = ForReading
   
    sText = oTextFile.ReadAll
    ExecuteGlobal sText
End Sub

 

공용함수를 보관하는 script)

 


Sub MySubRoutine

  MsgBox TimeValue(Time)

End Sub

 

 


ExecuteGlobal 명령의 사용에 대해서는 마이크로소프트가 운영하는 MSDN(Microsoft Developer Network)에 자세히 소개되어 있습니다.

 

http://msdn.microsoft.com/en-us/library/342311f1(v=vs.84).aspx

Attachments

    Outcomes