VBS include or import

I'm writing some VBS for the SecureCRT tool and want to better organize my code.

I have a set of constants that I want to use in a series of vbs files, and rather than copy/paste them into each, I'd like to include the code through a single "include" statement.

What command or set of commands do I use to achieve this?

Import "KeyboardConstants.vbs"

Sub Main()
  MsgBox "Here's a carriage return:" & ReturnKey & "!!!"
End Sub

When I run this, I'l like it to show a messagebox.
ReturnKey would be a variable defined inside the KeyboardConstants.vbs file.

I may also have to procedures in that import file which would be available with a simple call such as this:

Sub Main()
End Sub

where RunExternalProcedure() is defined in KeyboardConstants.vbs
LVL 22
Who is Participating?
ClifConnect With a Mentor Commented:
Actually it can be done, but you have to create WSF files, instead of VBS (the include file can be a VBS file)

<script language="VBScript" src=".\Constants.vbs"/>
<script language="VBScript">
  call TryIt()
  wscript.echo "xyz = " & xyz '"This is a test"

dim xyz
xyz = 123

sub TryIt()
  wscript.echo "Try It"
end sub
Onfortunatelly this is not supported in vb script - You have to repeate your declaration in each file
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

rspahitzAuthor Commented:
So what is ExecuteGlobal?  It seems to be a way to import code, but I'm just reading up on it. Might that help?
rspahitzAuthor Commented:
It seems that it lets you take code and run it...if I can read the code file, I may be able to run it.  Have you ever tried that?
rspahitzAuthor Commented:
Actually, I found this in the archives and it seems to be doing that:

'Sub Include(sCodeFile)
'      Dim sCode
'      with createobject("scripting.filesystemobject")
'            sCode = .OpenTextFile(sCodeFile).ReadAll
'      End With
'      ExecuteGlobal sCode
'End Sub

Now I think I understand how it works...I'll experiment a bit after lunch, otherwise on Monday.
Hmm I never used it. Let me know if it works :)
Michael_DConnect With a Mentor Commented:
>>Actually it can be done, but you have to create WSF files, instead of VBS (the include file can be a VBS file)

Or you can use Java, PHP, C/C++ or any other language that suports includes :)

The question is how to do it using VBScript, right?
Just my opinion ...
"The question is how to do it using VBScript, right?"

By adding the tag:
    <script language="VBScript">
You will be using VBScript.

The script will still be working within the WScript engine.

Try it.
I mean if i am coding in VBS and want to include functions or constants from other site - I will need pure VBS solution to do it - not creating wrapper or launcher in other language
VBS need an engine to run the script.

What engine are you running that "pure VBS solution" in?

The "wrapper or launcher" is not another language.  It's a directive to tell the scripting engine what to do.
rspahitzAuthor Commented:
The problem I have is that this is not a web project.  The SecureCRT app uses VBScript as a macro language, but it seems to use a limited subset.

I can actually test the syntax in Excel VBA for the most part, but not everything works.

I'll check out the WBS concept.

The VBS files start with this:

# $language = "VBScript"
# $interface = "1.0"

Then you add a sub-main and the code to run.  The problem is that the file is getting kinda big and I'd like to break it up into modules.  I have it load a menu into an InputBox, then jump to a subroutine based on the input.  (I was hoping to add a custom form, but in CreateObject I wasn't sure what class to instantiate.  But that's for another question if I can get this working.
rspahitzAuthor Commented:
Well, this works !!! :)

      ExecuteGlobal "Sub x:Msgbox ""x"":end sub"

That's kinda cool.
However, setting a bunch of constants in a separate file generates an error in the ExecuteGlobal.
I might be able to put them elsewhere, like a class of some sort.  I'll have to keep playing.

And I like the idea of a Windows Script File (WSF) but I don't think it will work with the SecureCRT app.  Maybe when I start doing webpages (although I usually use JavaScript for that since it's more portable to most browsers.)
rspahitzAuthor Commented:
OK...got it...the external file had the heading directives in it (# $lang...)  When I took those out, it worked! :)

I'll keep this open for a bit in case there are any other comments.
rspahitzAuthor Commented:
Although I actually got the answer myself, I think that talking it out helped guide me in the right direction.  I also learned a few things about vbscript---so thanks.
rspahitz thank you for points and for good question / answer
I learned also something new to me :)
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.