OLE Automation in JavaScript: The ActiveXObject() Function | WebReference

OLE Automation in JavaScript: The ActiveXObject() Function

OLE Automation in JavaScript

The ActiveXObject() Function

JScript (Microsoft's version of JavaScript) is a loosely-typed language. In other words, variables aren't explicitly declared as specific data types. You cannot declare a variable as a specific type of object, so early binding is not possible in JScript. JScript's ActiveXObject() constructor function is used to create a late bound interface to an object:

var wdApp; // a general variable
wdApp = new ActiveXObject("Word.Application");

JScript doesn't require explicit variable declarations, so we'll use the following convention instead:

var wdApp = new ActiveXObject("Word.Application");

The general syntax of the ActiveXObject() function is as follows:

var objVar = new ActiveXObject(class[, servername]);

objVar specifies a variable to hold the reference to the instantiated object. class uses the syntax library.object where library is the name of the application (e.g., Word, Excel) or library containing the object, and object is the type or class of the object to create. servername (an optional argument) specifies the name of the server on which the object resides.

The ActiveXObject() constructor function creates an instance of an OLE Automation (ActiveX) object. Once an object is created, you refer to it in code using the object variable you defined. If an instance of the ActiveX object is already running, ActiveXObject() may start a new instance when it creates an object of the required type. The following code segment lets the user open a Word document directly:

var pause = 0;
var wdDialogFileOpen = 80;
var wdApp = new ActiveXObject("Word.Application");
var dialog = wdApp.Dialogs(wdDialogFileOpen);
var button = dialog.Show(pause);

The preceding code segment references the Word.Application object, and its methods are used later. Notice the hierarchical structure, where one method or property is actually an object that has its own methods and properties.

Like Visual Basic 6, JScript takes the ActiveXObject() function one step further by adding a new parameter, servername. You can now specify the name of the server on which the ActiveX object is registered. Creating an object on a remote server can only be accomplished when Internet security is turned off. You can create an object on a remote networked computer by passing the name of the computer to the servername argument of the ActiveXObject() constructor. For example, if a network share is named "\\MYSERVER\D\Program Files," the value of servername should be "MYSERVER." In addition, you can specify the location using DNS format or an IP address. The following function returns the version number of an instance of Word running on a remote network computer named "MYSERVER":

function getVersion() {
  var wdApp = new ActiveXObject("Word.Application", "MYSERVER");
  return wdApp.Version;

An error occurs if the specified remote server does not exist or cannot be found. When testing this function, we discovered that JScript actually ignores the servername parameter. So we put together the following function in VBScript, and realized that it doesn't work either:

Function GetVersion
  Dim wdApp
  Set wdApp = CreateObject("Word.Application", "MYSERVER")
  GetVersion = wdApp.Version
End Function


Produced by Yehuda Shiran and Tomer Shiran

Created: January 10, 2000
Revised: January 10, 2000

URL: http://www.webreference.com/js/column55/activex.html