GetObject メソッド
指定された ProgID を持つ既存のオブジェクトを取得するか、ファイルを読み込んで新しいオブジェクトを作成します。
object.GetObject(strPathname [,strProgID], [strPrefix])
引数
- object
WScript オブジェクトです。 - strPathname
必須です。取得するオブジェクトがあるファイルの絶対パスと名前を指定します。 - strProgID
省略可能です。オブジェクトのプログラム ID (ProgID) を表現する文字列を指定します。 - strPrefix
省略可能です。オブジェクトのイベントを同期させる場合に使用します。strPrefix パラメータを指定した場合、Windows Script Host は、オブジェクト作成後にオブジェクトの出力インターフェイスをスクリプト ファイルに接続します。
解説
オブジェクトの現在のインスタンスがある場合か、既にロードされているファイルからオブジェクトを作成する場合は、GetObject メソッドを使用します。現在のインスタンスがない場合と、既にロードされているファイルからオブジェクトを作成しない場合は、CreateObject メソッドを使用します。GetObject メソッドは、どの言語でオブジェクトを作成したかに関係なく、すべての COM クラスで使用できます。strPrefix 引数を指定した場合、WSH はオブジェクト作成後にオブジェクトの出力インターフェイスをスクリプト ファイルに接続します。オブジェクトがイベントを発行すると、WSH は strPrefix + イベント名という形式の名前を持つサブルーチンを呼び出します。たとえば、strPrefix が MYOBJ_
であり、オブジェクトが OnBegin
というイベントを発行した場合、Windows Script Host はスクリプト内の MYOBJ_OnBegin
** という名前のサブルーチンを呼び出します。
シングルインスタンスのオブジェクト (たとえば Microsoft Word 7.0 の Word.Basic オブジェクト) として登録されている場合、CreateObject を何度実行しても、オブジェクトのインスタンスは 1 つしか作成されません。さらに、シングルインスタンスのオブジェクトの場合、長さ 0 の文字列 ("") を指定して GetObject を呼び出すと必ず同じインスタンスが返り、パスのパラメータを省略するとエラーが発生します。GetObject では、Visual Basic 4.0 以前のバージョンで作成した Microsoft Visual Basic® クラスへの参照を取得できません。
使用例
次の VBScript コードは、指定されたファイル(strPathname) に関連付けられている
アプリケーションを起動する例です。
Dim MyObject As Object
Set MyObject = GetObject("C:\CAD\SCHEMA.CAD")
MyApp = MyObject.Application
ファイルの一部をアクティブにできるアプリケーションもあります。ファイルの一部をアクティブにするには、ファイル名の末尾に感嘆符 (!) を付け、アクティブにする部分を示す文字列をその後に指定します。 たとえば、描画アプリケーションでは、ファイルに保存された図面に複数のレイヤが含まれていることがあります。次のコードは、schema.cad という図面ファイルにある 1 つのレイヤをアクティブにする例です。
Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")
オブジェクトのクラスを指定しなかった場合、COM は指定されたファイル名に基づき、起動するアプリケーションとアクティブにするオブジェクトを判断します。ただし、オブジェクトのクラスが 2 つ以上サポートされるファイルもあります。たとえば、図面ファイルでは、Application オブジェクト、Drawing オブジェクト、Toolbar オブジェクトという 3 種類の型のオブジェクトがサポートされ、どのオブジェクトも同一のファイルに入っています。
次の VBScript コードは、描画アプリケーション FIGMENT
を起動し、ファイル SAMPLE.DRW
内のオブジェクト DRAWING
を開く例です。
Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")