Interaction.CreateObject メソッド
アセンブリ: Microsoft.VisualBasic (microsoft.visualbasic.dll 内)

Public Shared Function CreateObject ( _ ProgId As String, _ <OptionalAttribute> Optional ServerName As String = "" _ ) As Object
Dim ProgId As String Dim ServerName As String Dim returnValue As Object returnValue = Interaction.CreateObject(ProgId, ServerName)
public static Object CreateObject ( String ProgId, /** @attribute OptionalAttribute() */ String ServerName )
戻り値
COM オブジェクトへの参照を作成し、返します。Visual Basic では、クラスが COM コンポーネントとして明示的に公開されない限り、CreateObject を使用してそのクラスのインスタンスを作成することはできません。

詳細については、Visual Basic のトピック「CreateObject 関数 (Visual Basic)」を参照してください。
COM コンポーネントのインスタンスを作成するには、CreateObject によって返されたオブジェクトをオブジェクト変数に割り当てます。
返されたオブジェクトを格納するために使用するオブジェクト変数の種類によって、アプリケーションのパフォーマンスが変わります。As Object 句を使用してオブジェクト変数を宣言すると、任意の種類のオブジェクトへの参照を含む変数が作成されます。しかし、この変数によるオブジェクトへのアクセスは遅延バインディングになります。つまり、プログラムが実行されたときにバインディングが発生します。アプリケーション パフォーマンスの低下など、多くの問題があるため、遅延バインディングは避ける必要があります。
事前バインディングとなる、つまりプログラムがコンパイルされるときにバインディングが発生するオブジェクト変数を作成できます。それには、[プロジェクト] メニューで [参照の追加] ダイアログ ボックスを開き、[COM] タブで、オブジェクトのタイプ ライブラリへの参照を追加します。次に、特定のタイプのオブジェクトのオブジェクト変数を宣言します。ほとんどの場合、CreateObject 関数を使用するよりも、Dim ステートメントとプライマリ相互運用アセンブリを使用してオブジェクトを作成する方が効率的です。
アンマネージ コードへの対応もう 1 つの問題は、アンマネージ コードを使用する COM オブジェクトです。アンマネージ コードとは、共通言語ランタイムを利用しないコードです。Visual Basic のマネージ コードに COM のアンマネージ コードを組み合わせると、非常に複雑になります。COM オブジェクトへの参照を追加すると、Visual Basic ではそのライブラリのプライマリ相互運用機能アセンブリ (PIA) が検索されます。PIA が見つかった場合、それが使用されます。PIA が見つからなかった場合、COM ライブラリの各クラスに対応するローカル相互運用性クラスを含む相互運用機能アセンブリが作成されます。詳細については、「.NET Framework アプリケーションにおける COM 相互運用性」を参照してください。
一般的には、厳密にバインディングされたオブジェクトとプライマリ相互運用機能アセンブリをできる限り使用する必要があります。CreateObject 関数を Microsoft Office オブジェクトと共に使用する例を次に示します。この例は、デモンストレーションのためだけに作成されています。しかし、このようなオブジェクトは適切なプライマリ相互運用機能アセンブリと組み合わせて使った方がより簡単で、信頼性も向上します。
CreateObject 関数の ServerName 引数にリモート ネットワーク コンピュータの名前を渡すことで、リモート ネットワーク コンピュータ上にオブジェクトを作成できます。この名前は、共有名のコンピュータ名の部分と同じです。たとえば、共有名が "\\MyServer\Public" の場合、ServerName は "MyServer" になります。
![]() |
---|
リモート ネットワーク コンピュータでアプリケーションをアクセスできるようにする方法については、Microsoft Developer Network で COM に関するドキュメントを参照してください。アプリケーション用のレジストリ キーの追加が必要な場合もあります。 |
次に示すコードを実行すると、MyServer という名前のリモート コンピュータで実行されている Excel のインスタンスのバージョン番号が返されます。
Sub CreateRemoteExcelObj() Dim xlApp As Object ' Replace string "\\MyServer" with name of the remote computer. xlApp = CreateObject("Excel.Application", "\\MyServer") MsgBox(xlApp.Version) End Sub
リモート サーバーの名前が誤っている場合、またはリモート サーバーを利用できない場合、ランタイム エラーが発生します。
![]() |
---|
オブジェクトの現在のインスタンスが存在していない場合は、CreateObject を使用します。オブジェクトのインスタンスが既に実行中の場合は、新しいインスタンスが開始され、指定された種類のオブジェクトが作成されます。現在のインスタンスを使用する、またはアプリケーションを起動してファイルを読み込むには、GetObject 関数を使用します。オブジェクトがそれ自身を単一インスタンスのオブジェクトとして登録していた場合、CreateObject を何度実行しても、オブジェクトのインスタンスは 1 つしか作成されません。 |
.NET Framework オブジェクトの作成
CreateObject 関数は、COM オブジェクトの作成にのみ使用できます。.NET Framework オブジェクトの作成に使用できる同一の機能はありませんが、System 名前空間にある Activator に、ローカル オブジェクトまたはリモート オブジェクトを作成するメソッドがあります。特に、CreateInstance メソッドまたは CreateInstanceFrom メソッドが役立ちます。
![]() |
---|
CreateObject 関数には、アンマネージ コード アクセス許可が必要です。ただし、部分的に信頼されている状況でこの許可を使用すると、プログラムの実行に影響を及ぼす場合があります。詳細については、SecurityPermission、コード アクセス許可 の各トピックを参照してください。 |

CreateObject 関数を使用して Microsoft Excel ワークシートを作成し、そのワークシートをファイルに保存する例を次に示します。この例を使用するには、プログラムを実行するコンピュータに Excel をインストールしておく必要があります。さらに、[プロジェクト] メニューで [参照の追加] ダイアログ ボックスを開き、[COM] タブでタイプ ライブラリへの参照を追加する必要があります。タイプ ライブラリの名前は、コンピュータにインストールされている Excel のバージョンによって変わります。たとえば、Microsoft Excel 2002 のタイプ ライブラリは "Microsoft Excel 10.0 Object Library" という名前です。
Sub TestExcel() Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlBook As Microsoft.Office.Interop.Excel.Workbook Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet xlApp = CType(CreateObject("Excel.Application"), _ Microsoft.Office.Interop.Excel.Application) xlBook = CType(xlApp.Workbooks.Add, _ Microsoft.Office.Interop.Excel.Workbook) xlSheet = CType(xlBook.Worksheets(1), _ Microsoft.Office.Interop.Excel.Worksheet) ' The following statement puts text in the second row of the sheet. xlSheet.Cells(2, 2) = "This is column B row 2" ' The following statement shows the sheet. xlSheet.Application.Visible = True ' The following statement saves the sheet to the C:\Test.xls directory. xlSheet.SaveAs("C:\Test.xls") ' Optionally, you can call xlApp.Quit to close the workbook. End Sub

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Interaction クラス
Interaction メンバ
Microsoft.VisualBasic 名前空間
Exception
FileNotFoundException
Activator
CreateInstance
CreateInstanceFrom
その他の技術情報
CreateObject 関数 (Visual Basic)
GetObject 関数 (Visual Basic)
Dim ステートメント (Visual Basic)
Declare ステートメント
.NET Framework アプリケーションにおける COM 相互運用性
アンマネージ コードとの相互運用
Weblioに収録されているすべての辞書からInteraction.CreateObject メソッドを検索する場合は、下記のリンクをクリックしてください。

- Interaction.CreateObject メソッドのページへのリンク