CreateObject 関数

ActiveX オブジェクトへの参照を作成して返します。

構文

CreateObject(class, [ servername ])


CreateObject 関数の構文は、次の指定項目があります。

指定項目 説明
class 必須。Variant (String)。 作成するオブジェクトのアプリケーション名とクラス。
servername 省略可能。Variant (String)。 オブジェクトを作成するネットワーク サーバーの名前。 servername は、空の文字列 ("") である場合、ローカル コンピューターが使用されます。

class 引数の構文は appname.objecttype で、指定項目は次のとおりです。

指定項目 説明
appname 必須。Variant (String)。 オブジェクトを提供するアプリケーションの名前。
objecttype 必須。Variant (String)。 作成するオブジェクトの型またはクラス

解説

オートメーションをサポートするアプリケーションはすべて、1 つ以上の型のオブジェクトを提供します。 たとえば、ワード プロセッシング アプリケーションでは、アプリケーション オブジェクト、文書 オブジェクト、ツール バー オブジェクトが提供されます。

ActiveX オブジェクトを作成するには、CreateObject によって返されたオブジェクトを オブジェクト変数に割り当てます。

' Declare an object variable to hold the object 
' reference. Dim as Object causes late binding. 
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")

このコードでは、オブジェクトを作成するアプリケーション (この場合は Microsoft Excel のスプレッドシート) を起動します。 作成されたオブジェクトをコードで参照するには、定義したオブジェクト変数を使用します。 次の例では、オブジェクト変数 ExcelSheet とその他の Excel オブジェクト (Application オブジェクト、Cells コレクションなど) を使用して、新しいオブジェクトのプロパティおよびメソッドにアクセスします。

' Make Excel visible through the Application object.
ExcelSheet.Application.Visible = True
' Place some text in the first cell of the sheet.
ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1"
' Save the sheet to C:\test.xls directory.
ExcelSheet.SaveAs "C:\TEST.XLS"
' Close Excel with the Quit method on the Application object.
ExcelSheet.Application.Quit
' Release the object variable.
Set ExcelSheet = Nothing


As Object 句を使用してオブジェクト変数を宣言すると、任意の型のオブジェクトへの参照を含めることができる変数が作成されます。 ただし、遅延バインディングの変数を使用してオブジェクトにアクセスします。つまり、プログラムの実行時にバインドが行われます。 事前バインドを発生させるオブジェクト変数を作成する、つまり、プログラムがコンパイルされたときにバインドするには、特定のクラス ID を使用してオブジェクト変数を宣言します。 たとえば、次のような Microsoft Excel の参照を宣言して作成することができます。

Dim xlApp As Excel.Application 
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.WorkSheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)


事前バインド変数を使用して参照すると、パフォーマンスは向上する可能性がありますが、宣言で指定したクラスへの参照しか含めることができません。

CreateObject 関数によって返されるオブジェクトを、オブジェクトを必要とする関数に引数として渡すことができます。 たとえば、次のコードでは、Excel.Application オブジェクトへの参照を作成して渡します。

Call MySub (CreateObject("Excel.Application"))

コンピューターの名前を CreateObjectservername 引数に渡して、ネットワーク接続されたリモート コンピューターにオブジェクトを作成することができます。 この名前は、共有名のコンピューター名の部分と同じです。共有名が "\MyServer\Public" の場合、servername は "MyServer" です。

次のコードは、MyServer という名前のリモート コンピューターで実行されている Excel のインスタンスのバージョン番号を返します。

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MyServer")
Debug.Print xlApp.Version

このリモート サーバーが存在しない場合または使用できない場合は、実行時エラーが発生します。

注意

CreateObject は、オブジェクトの現在のインスタンスがない場合に使用します。 オブジェクトのインスタンスが既に実行されている場合は、新しいインスタンスが開始され、指定した型のオブジェクトが作成されます。 現在のインスタンスを使用する、またはアプリケーションを起動してファイルを読み込ませるには、GetObject 関数を使用します。

オブジェクトが単一インスタンスのオブジェクトとして登録されている場合は、CreateObject を何回実行しても、そのオブジェクトのインスタンスは 1 つしか作成されません。

この例では、CreateObject 関数を使用して Microsoft Excel への参照 (xlApp) を設定します。 この参照を使用して、Microsoft Excel の Visible プロパティにアクセスし、Microsoft Excel の Quit メソッドを使用して終了します。 最後に、参照自体が解放されます。

Dim xlApp As Object    ' Declare variable to hold the reference.
    
Set xlApp = CreateObject("excel.application")
    ' You may have to set Visible property to True
    ' if you want to see the application.
xlApp.Visible = True
    ' Use xlApp to access Microsoft Excel's 
    ' other objects.
    ' Closes the application using the Quit method
xlApp.Quit    

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。