CreateObject 関数

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

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

構文

CreateObject ( class [, servername] )

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

引数

説明

class

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

servername

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


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

項目

説明

appname

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

objecttype

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


解説

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

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

注: 次の例は、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")

このコードは、オブジェクト (ここでは、Microsoft Office Excel 2007 スプレッドシート) を作成するアプリケーションを起動します。オブジェクトが作成されたら、定義したオブジェクト変数を使用して、コード内でオブジェクトを参照します。次の例では、オブジェクト変数、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)

事前バインド変数を使用する参照は、パフォーマンスが向上する場合がありますが、declarationで指定したclassの参照しか含めることができません。

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

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

コンピューターの名前を CreateObjectservername 引数に渡して、リモート ネットワークのコンピューターにオブジェクトを作成することができます。この名前は、共有名の <コンピューター名> 部分と同じです。共有名が "\\MyServer\Public" の場合、servername は "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.

注記: 

  • 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

  • この記事の英語版を参照するには、ここ をクリックしてください。Microsoft コミュニティの他のメンバーと一緒に、Community Translation Framework (CTF) を使ったこの記事の改善にご協力ください。記事内の文章にマウス ポインターを合わせて、CTF ウィジェットの [翻訳を改善します] をクリックしてください。CTF の詳細については、ここ をクリックしてください。CTF を使用すると弊社の サービス利用規約 に同意したことになります。

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

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

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

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

×