VBS(Visual Basic Script)

[Visual Basic] 비주얼베이직 스크립트 (VBScript), 외부에 있는 .vbs파일의 함수 가져오기 (import function in external VBS file)

안산드레아스 2023. 2. 6. 18:40
반응형

VBScript의 함수에 대해서는 아래를 참고한다. (Function과 Sub의 작동방식, 차이)

https://ansan-survivor.tistory.com/1591

 

[Visual Basic] 비주얼베이직 스크립트 (VBScript) 함수만들기, 함수값 Return 받기, 서브루틴 (Sub Routine)

User Define Function으로 함수를 만들고, 함수를 호출할 때는 Call 으로 한다. Function 함수 만들기 기본 예제 사용법... 두 값을 받아 출력하는 함수. Function sayHello(name, age) msgbox( name & " is " & age & " years ol

ansan-survivor.tistory.com

 

 

vbscript는 외부의 .vbs를 쉽게 가져와 실행이 불가, 그래서 전역변수를 만들어 가져오는 방법이다.

 

아래의 예시는,

a.vbs와 b.vbs가 동일 경로에 있을 때 아래와 같은 방법으로 Include 함수로 해당 .vbs 파일을 불러와 사용.

 

1.   a.vbs에 전역변수로 선언되어있는 값을 msgbox로 보기

2.   a.vbs에서 선언된 함수의 리턴값을 msgbox로 보기

3.   a.vbs의 sub루틴 함수 실행하기

 

a.vbs 파일에 있는 Add() 함수를 가져와서 b.vbs 에 실행하는 방법.

a.vbs 파일

'
' 공용함수를 보관할 스크립트
'

Option Explicit

' 전역변수로 쓸 값 확인, 결과값에 +3을 함
Dim AddResult_Plus3

' Function으로 값 리턴하기
Function Add(a, b)
    Dim fun_result
    ' 전역변수에 값을 대입
    AddResult_Plus3 = a + b + 3

    ' Add함수의 리턴 값. Add함수명에 아래와 같이 값을 넣어주어야 함.
    fun_result = a + b
    Add = fun_result
End Function


' Sub-routine은 리턴기능이 없음. 자체적 기능 수행.
Sub MySubRoutine
    MsgBox TimeValue(Time)
End Sub

 

반응형

 

b.vbs 파일

Option Explicit


' import external .vbs file
Sub Include(sFilePath)
    On Error Resume Next

    Dim oFSO, oTextFile, sText

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    If oFSO.FileExists(sFilePath) Then
        Set oTextFile = oFSO.OpenTextFile(sFilePath, 1)  ' 1 = for Reading
        sText = oTextFile.ReadAll
        oTextFile.Close
        ExecuteGlobal sText
    End If

    Set oFSO = Nothing
    Set oTextFile = Nothing
End Sub

' a.vbs 불러오기
Call Include("a.vbs")


' 1.  a.vbs 내에 있는 함수를 실행하기, 전역변수 출력하기
Call Add(1,2)
' a에 선언되어있는 전역변수값 출력, 해당 변수는 Add()결과 값
MsgBox AddResult_Plus3


' 2. 리턴된 함수값 확인
Dim FromExternalValue
FromExternalValue = Add(1,2)
MsgBox FromExternalValue


' 3. sub 루틴 함수 실행
Call MySubRoutine()

 

(결과)

b를 실행시키면, a.vbs 내 선언된 Add() 함수를 연산하여, msgbox로 아래 순서대로 띄움.

 

  * 전역변수 AddResult_Plus3

  * 리턴값 FromExternalValue

  * Sub루틴 함수 실행 결과 

 

 

 

반응형