GetObject 関数

GetObject([pathname, class])

ファイルから取得したオートメーション オブジェクトへの参照を返します。

引数

pathname
省略可能です。
文字列を指定します。取得するオブジェクトが含まれているファイルの絶対パスおよびファイル名を指定します。引数 pathname に長さ 0 の文字列 ("") を指定した場合は、引数 class も指定する必要があります。
class
省略可能です。
文字列を指定します。オブジェクトのクラスを表す文字列を指定します。
引数class は、appname.objectype の形式で指定します。
appname
オブジェクトを提供しているアプリケーションの名前を指定します。
objectype
作成するオブジェクトの種類またはクラスを指定します。

解説

GetObject 関数を使用して、ファイルから取得したオートメーション オブジェクトにアクセスしたり、取得したオブジェクトへの参照をオブジェクト変数に代入することができます。GetObject関数で取得したオブジェクトをオブジェクト変数に代入するには、Set ステートメントを使用します。次にコード例を示します。

Dim CADObject
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")
              

このコード例を実行すると、引数 pathname に指定したファイルに関連付けられているアプリケーションが起動され、指定したファイル内のオブジェクトがアクティブになります。引数 pathname に長さ 0 の文字列 ("") を指定すると、GetObject 関数は、指定した種類の新しいオブジェクト (インスタンス) を返します。引数 pathname を省略すると、GetObject 関数は、指定した種類の現在アクティブなオブジェクトを返します。指定した種類のオブジェクトが存在しない場合はエラーが発生します。

ファイルの一部をアクティブにするアプリケーションもあります。ファイルの一部をアクティブにするには、ファイル名の後に感嘆符 (!) を付け、アクティブにする部分を表す文字列をその後に指定します。この文字列の指定方法については、そのオブジェクトを提供するアプリケーションのマニュアルを参照してください。

たとえば、描画アプリケーションでは、1 つのファイルに格納されている描画が、複数の階層に分かれていることがあります。このような場合は、次のコード例ように記述すると、SCHEMA.CAD という描画ファイル内の 1 つの階層をアクティブにできます。

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")
              

オブジェクトの引数 class を指定しない場合、オートメーションが、指定したファイル名に基づいて起動するアプリケーションおよびアクティブにするオブジェクトを決定します。ただし、ファイルによっては複数のオブジェクトのクラスがサポートされています。たとえば、ある描画アプリケーションでは、3 つの異なる種類のオブジェクト、Application オブジェクト、Drawing オブジェクト、および Toolbar オブジェクトがサポートされていて、どのオブジェクトも同じファイル内にあるものと仮定します。このような場合は、引数 class を使用して、ファイル内のアクティブにするオブジェクトを指定します。次にコード例を示します。

Dim MyObject
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", "FIGMENT.DRAWING")
              

このコード例では、FIGMENT は描画アプリケーションの名前で、DRAWING は、FIGMENT がサポートしているオブジェクトの種類の 1 つです。一度、オブジェクトがアクティブになれば、定義したオブジェクト変数を使用して、そのオブジェクトを参照できるようになります。上の例の場合、オブジェクト変数 MyObject を使用して、アクティブになったオブジェクトのプロパティやメソッドを操作することができます。次にコード例を示します。

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"
              

備考

カレント オブジェクトのインスタンスがあるとき、または、既に読み込まれたファイルを使用してオブジェクトを作成するときは、GetObject 関数を使用します。カレント オブジェクトのインスタンスがなく、ファイルを使用してオブジェクトを作成しないときは、CreateObject 関数を使用します。

複数のインスタンスを作成できないオブジェクトの場合は、何度 CreateObject 関数を実行しても、そのオブジェクトのインスタンスは 1 つしか作成されません。また、複数のインスタンスを作成できないオブジェクトの場合、長さ 0 の文字列 ("") を指定して GetObject 関数を呼び出すと常に同じインスタンスを返し、引数 pathname を省略するとエラーが発生します。

関連

CreateObject 関数

  • 最速攻略VBScriptサンプル大全集

    好評の「最速攻略 VBScript サンプル大全集」の改訂版です。これまでのWindows2000/XPに加え、Windows Vista、最新のWindows 7環境にも対応しています。Windows上での処理の自動化や一括処理(バッチ処理)をテーマとしたVBScriptのサンプルスクリプト集です。付属 CD-ROMには、すぐに使うことができる100以上のサンプルスクリプトを用意しています。

  • VBScriptポケットリファレンス改訂版

    WebでもWindowsでも使えるVBScriptだから手元においてさっと引けるこの一冊!VBScript5.6に対応!待望の改訂版!目的別リファレンスでやりたいことから調べられます。すべての項目にサンプルコード掲載!WSH、ASP、IEすべての環境でお役に立ちます。

  • Excel VBAポケットリファレンス改訂第3版

    好評のExcel VBAポケットリファレンスが改訂第3版としてリニューアルしました。知りたいコマンドがすぐ調べられる機能引きリファレンスはそのままに、最新の Excel 2010に完全対応。もちろん、これまでのExcel 97、2000、2002、2003、2007のすべてのバージョンに対応しています。「こんなときどうするの?」「どう書けばいいの?」という疑問がすぐ解決する、全てのExcel VBAユーザー必携の、最強のリファレンスブックです!

  • Access VBA逆引きハンドブック

    本書はAccess VBAの各機能を、豊富なプログラミング例を使って、初心者にもわかりやすく、かつ網羅的に解説しています。また、やりたいことを目的別に簡単に探せる「逆引き」の構成になっています。

このページの先頭へ