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 を省略するとエラーが発生します。