VBScript (Visual Basic Scripting Edition) is an interpreted scripting language developed by Microsoft that is modeled on Visual Basic. VBScript is not the same thing as VBA or VB.NET. They are three different things, so use the correct tags.
VBScript (Visual Basic Scripting Edition) is an interpreted scripting language developed by Microsoft that is modeled on Visual Basic.
VBScript is commonly used for automating administrative and other tasks in the Windows operating systems (via Windows Script Host --wsh) and for server-side scripting in asp-classic web applications. It can also used for client-side scripting in internet-explorer (not other browsers), but is generally used for this purpose only in intranet web applications, where the browser can be limited to IE. VBScript is also the language used to create custom Outlook forms (outlook-forms).
Although VBScript has much common syntax with VBA, do not tag vbscript questions as vba unless you are specifically asking about both. It is also completely different than VB.NET.
Some differences between VBScript and VBA:
Does not support enumerated constants; replace with the numeric value:
'VBScript Outlook.CreateItem(0) 'VBA allows this: Outlook.CreateItem(olMailItem)
All variables are of type Variant, and are declared without a type specification:
'VBScript Dim olApp Dim msg 'VBA allows this: Dim olApp As Outlook.Application Dim msg As Outlook.MailItem
Method calls don't support named arguments.
'VBScript wb.SaveAs "output.csv", 6, , , , False 'VBA allows this: wb.SaveAs FileName:="output.csv", FileFormat:=xlCSV, CreateBackup:=False
Executing VBScripts with WSH -- WScript/CScript
VBScript can be executed locally either in GUI mode, in which output is displayed as a window:
wscript.exe C:\Script\Location\script.vbs
or in console mode, in which input is read from and written to a console window.
cscript.exe C:\Script\Location\script.vbs
Running wscript.exe
or cscript.exe
without specifying the path will run the script in the machine's architecture -- 32-bit on 32-bit machines, and 64-bit on 64-bit machines. On 64-bit machines, it is possible to have the script run in the 32-bit emulation layer:
C:\windows\SysWOW64\wscript.exe C:\Script\Location\script.vbs
C:\windows\SysWOW64\cscript.exe C:\Script\Location\script.vbs
Note: Scheduled VBScript tasks must be run with cscript.exe
because computer/domain policies limit activation of GUI applications when no user is logged on.
Debugging scripts
Visual Studio (Community Edition, or the Integrated Shell of pre-2013 versions) can be used to step through scripts and locate errors.
//X
will trigger the debugger if there is a runtime error, or a code breakpoint//D
will trigger the debugger at the beginning of the script
No variable expansion
Like other languages in the Visual Basic family, VBScript does not expand variables inside string literals, so in code like
var1 = "fox"
var2 = "The quick brown var1 jumps over the lazy dog."
the value of var2
will remain The quick brown var1 jumps over the lazy dog.
instead of becoming The quick brown fox jumps over the lazy dog.
To get the value of a variable in a string, the variable must be concatenated with the rest of the string:
var1 = "fox"
var2 = "The quick brown " & var1 & " jumps over the lazy dog."