Home > Articles > Programming > Visual Basic

Using VBScript

  • Print
  • + Share This
This chapter is from the book

The VBScript Language

When compared to standard VB, VBScript could almost be called "VB-Stripped" because it lacks so many functions. However, this is by design; the power of VBScript is in where it can be used and the objects it can access rather than in the language itself. Therefore, using VBScript will take some adjusting if you are used to Visual Basic.

Working with Variants Only

Perhaps the most striking difference between VB and VBScript is that all variables in VBScript are variants. The following statements are valid VBScript declarations:

Dim sLastName
Dim nCounter
Dim myArray(2,5)

VBScript does not allow a standard VB declaration with the As keyword. If you attempt to include one, you receive an error. The variant-only rule also applies to all variables used in subs and functions:

Function CalcInterest(P,R,T)
    CalcInterest = P * R * T
End Function

In the CalcInterest sample function, all the parameters and the return value are variants. The calling code could legally assign the string "Hello" to one of the parameters, although a type mismatch error would occur in the multiplication statement. For this reason, I strongly suggest adhering to the variable naming conventions you use in regular Visual Basic. You can also use the Option Explicit statement in the header of your Web page to require variable declarations.

Several functions in VBScript also can be used to determine the type of variable being stored in a variant. They are summarized in Table 30.3.

Table 30.3

Determining a Variable Type in VBScript

Function(s)

Purpose

VarType(varname)

Returns a constant

TypeName(varname)

Returns a description

Is()… functions

Checks for specific types and conditions

The following VBScript code displays the description of the type of each element in a variant array:

Dim varArray(5)
Dim i
varArray(1) = "This is a string"
varArray(2) = 123.456
varArray(3) = #12/25/1999#
varArray(4) = 10
varArray(5) = Null

For  i  = 1 to 5
  Msgbox "Array element " & i & " is of type " & TypeName(varArray(i))
Next

Notice also that the array example makes use of a For loop. In VBScript, a variable name cannot be placed after a Next statement in a For loop. Doing so causes an error.

Using Objects for Added Power

Although the VBScript language has definite limitations, keep in mind that you can use VBScript to communicate with external objects. These objects can be ActiveX DLLs that you write in regular Visual Basic or other automation objects installed on your system, such as Microsoft Excel or Word.

First, you create an instance of the object by using the CreateObject method:

Set objWord = CreateObject("Word.Application")

Next, you call methods and reference properties in the object:

objWord.Visible = True
objWord.Activate
objWord.Documents.Add
objWord.WordBasic.Insert "Here is some text"

Finally, when you are finished with the object, destroy the reference to it:

Set objWord = Nothing

NOTE

In Chapter 31, "Active Server Pages," you discover Server.CreateObject(), which is used to create objects in an Active Server Page.

Learn more about creating your own custom objects in Chapter 16, "Classes: Reusable Components." After you create these objects, you can use them with the CreateObject function.

      See "Creating an ActiveX DLL," p. 368.

When using your own objects with VBScript, you have to handle certain return values carefully because VBScript uses only variants. Most return values such as Integer or String work as you would expect with VBScript, but arrays require special attention. Examples of returning arrays and recordsets are described in Chapter 27.

Accessing the File System

To prevent harmful scripts from damaging the host computer, VBScript offers some special functions that replace the normal VB functions or perform the same activity in a different way. One major area of difference is in the handling of file access. The standard Visual Basic File input and output commands, as discussed in Chapter 21, "Working with Files," are not available in VBScript. Instead, all file access is provided through the methods and properties of special objects. The objects used in dealing with files are listed in Table 30.4.

Table 30.4

VBScript Objects Used for Working with Files

Object

Description

File

A file on the local machine

Folder

A folder (directory) on the local machine

Drive

A drive on the local machine

TextStream

An object that provides sequential read/write capability

FileSystemObject

An object that represents the entire file system; used to reference all the above objects

To perform file and disk operation, use a method or property of an object listed in Table 30.4. The most important object is the FileSystemObject object. You use VBScript's CreateObject function to create a reference to it, as in the following line of code:

Set objFs = CreateObject("Scripting.FileSystemObject")

Obviously, this object gives a malicious programmer a way to damage your system. For this reason, Internet Explorer displays a warning message when VBScript accesses external objects, as shown in Figure 30.6.

Figure 30.6

Internet Explorer has several security settings to prevent harmful scripts or controls from running on your computer.

The code in Listing 30.1 displays the last time a user visited a particular Web page. It keeps track of this information by creating a text file called LASTVISIT.TXT in the WINDOWS directory. Open the file in Internet Explorer and click the Refresh button several times to test it.

Listing 30.1  :Accessing the File System in Internet Explorer 4.0

<HTML>
<HEAD>
<SCRIPT Language = "VBScript">
<!--OPTION EXPLICIT
    Dim objfs    'FileSystemObject Object
    Dim objfile  'File Object
    Dim objTs    'TextStream Object
    Dim sInfoFile    'Path to the info file
    Dim sInfo        'Variable used to store information
    'Create a reference to the local file system
    Set objFs = CreateObject("Scripting.FileSystemObject")
    'Determine path to file in the windows directory
    sInfoFile = objFS.GetSpecialFolder(0) & "\LASTVISIT.TXT"
    'If file exists then read a line of text
    If objfs.FileExists(sInfoFile) Then
        Set objfile = objfs.GetFile(sInfoFile)
        Set objts = objfile.OpenAsTextStream(1) 'Reading = 1, Writing = 2
        sInfo = objts.ReadLine()
        objts.close
    Else
        sInfo = "You haven't visited this web site before!"
    End If
    'Write message to the browser window
    Document.Write sInfo & "<BR>"
    'Store new message in the file for next time
    sInfo = "Your last visit was <B>" & Now & "</B>. Welcome back!"
    Set objts = objfile.OpenAsTextStream(2) 'Reading = 1, Writing = 2
    objts.WriteLine(sInfo)
    objts.close
    Set objfs = Nothing
-->
</SCRIPT>
</HEAD>
</HTML>
  • + Share This
  • 🔖 Save To Your Account