CreateObject 関数

注: Microsoft Jet Expression Service がサンドボックス モードで実行されている場合 (安全でない可能性がある式の評価は行われません)、このトピックで説明する関数、メソッド、オブジェクト、またはプロパティは無効です。 サンドボックス モードの詳細については、ヘルプで "サンドボックス モード" を検索してください。

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

構文

CreateObject ( class [, servername] )

CreateObject 関数の構文には、次の引数があります。

引数

説明

class

必須。 バリアント型 (文字列)。 作成するオブジェクトのアプリケーション名とクラスです。

servername

省略可能。 バリアント型 (文字列)。 オブジェクトが作成されるネットワーク サーバーの名前です。 servername が空の文字列 ("") の場合、ローカル コンピューターが使用されます。


class 引数 には、構文 appname.objecttype が使用され、次の項目があります。

項目

説明

appname

必須。 バリアント型 (文字列)。 オブジェクトを提供するアプリケーションの名前です。

objecttype

必須。 バリアント型 (文字列)。 作成するオブジェクトの種類またはクラスです。


解説

オートメーションをサポートするすべてのアプリケーションで、少なくとも 1 種類のオブジェクトを提供します。 たとえば、ワード プロセッシング アプリケーションでは、アプリケーション オブジェクト、文書オブジェクト、およびツールバー オブジェクトを提供する場合があります。

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

注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。

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

この例では、Access データベース内から Excel スプレッドシート オブジェクトを自動化します。 このコードでは、オブジェクト (この場合は 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 で宣言します。 たとえば、次の 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"))

リモート ネットワーク コンピューターでオブジェクトを作成するには、CreateObject のサーバー名引数にコンピューターの名前を渡します。 この名前は、共有名のマシン名部分と同じです。"\\MyServer\Public" という名前の共有の場合、 サーバー 名は "MyServer" です。

注:  リモート ネットワークのコンピューターにアプリケーションを表示する方法の詳細については、COM ドキュメント (Microsoft Developer Network) を参照してください。 アプリケーションにレジストリ キーを追加する必要がある場合があります。

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

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

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

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

オブジェクトが単一のインスタンスのオブジェクトとして登録されている場合は、CreateObject が実行される回数に関係なく、そのオブジェクトに 1 つのインスタンスのみが作成されます。

この例では、 CreateObject 関数を使用して、参照 (

xlApp

) を Excel に設定します。 この参照を使用して、Excel の Visible プロパティにアクセスし、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.
xlApp.Quit ' When you finish, use the Quit method to close
Set xlApp = Nothing ' the application, then release the reference.

ヘルプを表示

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×