Calling An External VBScript Function/Routine With Return Parameters

I want to run a VBScript function from another VBScript with parameters.  How is this done?

'C:\Script1.vbs
Dim MyVar
MyVar = Blah(1, 2, 3)

'C:\Scrip2.vbs
Function Blah(Num1, Num2, Num3)
  Blah = Num1 + Num2 + Num3
End Function


Mike
shachoAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Tompa99Commented:
Hi there

Using one main script Main.wsf like the one in the Code Snippet in this I do include one vbs script
Function.vbs with the following code:

private function GetComputerName()

      Dim objWshNetwork
      Set objWshNetwork = WScript.CreateObject("WScript.Network.1")
      GetComputerName = objWshNetwork.ComputerName
      
end function

Best Regards Tompa


<job id="[NameOfJob]">
	<!-- Add more lines or remove line below depending on how many subscripts you need-->
	<script language="VBScript" src="Functions.vbs">
 
Call Main
 
'************************** Main () ******************
Sub Main
Dim strComputerName
		strComputerName = GetComputerName()
		MsgBox strComputerName
End Sub
 
</script>
</job>

Open in new window

0
RobSampsonCommented:
Hi, you can also try using the ExecuteGlobal method inside Script1.vbs to read in the code from Script2.vbs and then execute it's function.  Something like the below may work.

Regards,

Rob.
' First read in the Script2.vbs contents and use ExecuteGlobal to include it's code
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const intForReading = 1
strFunctionsFile = "Script2.vbs"
Set objFunctions = objFSO.OpenTextFile(strFunctionsFile, intForReading, False)
strFunctionsCode = objFunctions.ReadAll
objFunctions.Close
ExecuteGlobal strFunctionsCode
 
'Now call a function
strReturnCode = Blah(1, 2, 3)
MsgBox "Return code from included function is " & strReturnCode

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
shachoAuthor Commented:

Tompa - I don't see how you are specifying the path to the second script.
Rob - Interesting approach.

Mike
0
CompTIA Network+

Prepare for the CompTIA Network+ exam by learning how to troubleshoot, configure, and manage both wired and wireless networks.

RobSampsonCommented:
Tompa's reference to the second script is this bit:
src="Functions.vbs"

The file is a WSF file, as opposed to a VBS file, so you can save it as WSF and try it.

You can also try my approach, let me know if it works out.

Regards,

Rob.
0
shachoAuthor Commented:
Hmm.  I suppose that would work.  But is there really no way to call functions script to script (vbs only) with return values?
0
Tompa99Commented:
Hi,

Not that I know. WSF or like Rob suggested are 2 solutions.

Best Regards Tompa
0
RobSampsonCommented:
No, there is no other way.  They do not work like include files on a web page.  I guess one more option, although a bit harder to use, is to use objShell.Run in script1.vbs, to run script2.vbs, while passing some arguments, then in script2.vbs, you read those command line arguments with
wscript.arguments(#)

Then, script2.vbs can return one numeric value with
wscript.quit(intNumber)

which is caught by the objShell.Run method of script1.vbs.  If you want to return text though, you'll have to have script2.vbs write to a file, then Script1.vbs will read that file once Script2.vbs is complete.

Regards,

Rob.
0
shachoAuthor Commented:
Rob - that's a pretty clever workaround.  Thanks all for your comments.

Mike
0
RobSampsonCommented:
Great, thanks for the grade,

Regards,

Rob.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
VB Script

From novice to tech pro — start learning today.