Interaction.CreateObject(String, String) メソッド

定義

COM オブジェクトへの参照を作成して返します。 Visual Basic では、クラスが COM コンポーネントとして明示的に公開されない限り、CreateObject を使用してそのクラスのインスタンスを作成することはできません。

public static object CreateObject (string ProgId, string? ServerName = "");
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object CreateObject (string ProgId, string? ServerName = "");
public static object CreateObject (string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

パラメーター

ProgId
String

必須です。 String. 作成するオブジェクトのプログラム ID。

ServerName
String

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

戻り値

COM オブジェクトへの参照を作成して返します。 Visual Basic では、クラスが COM コンポーネントとして明示的に公開されない限り、CreateObject を使用してそのクラスのインスタンスを作成することはできません。

属性

例外

サーバーを利用できません。

指定した型のオブジェクトが存在しません。

次の例では、 関数を CreateObject 使用して Microsoft Excel ワークシートを作成し、ワークシートをファイルに保存します。 この例を使用するには、このプログラムを実行するコンピューターに Excel をインストールする必要があります。 また、[プロジェクト] メニューの [参照の追加] ダイアログ ボックスの [COM] タブからタイプ ライブラリへの参照を追加する必要があります。 タイプ ライブラリの名前は、コンピューターにインストールされている Excel のバージョンによって異なります。 たとえば、Microsoft Excel 2002 のタイプ ライブラリの名前は 、Microsoft Excel 10.0 オブジェクト ライブラリです。

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

注釈

COM コンポーネントのインスタンスを作成するには、 によって CreateObject 返されるオブジェクトをオブジェクト変数に割り当てます。

Sub CreateADODB()  
   Dim adoApp As Object  
   adoApp = CreateObject("ADODB.Connection")  
End Sub  

返されるオブジェクトを格納するために使用するオブジェクト変数の型は、アプリケーションのパフォーマンスに影響を与える可能性があります。 句を使用してオブジェクト変数を As Object 宣言すると、任意の型のオブジェクトへの参照を含めることができる変数が作成されます。 ただし、その変数を介した オブジェクトへのアクセスは 遅延バインディングです。つまり、バインドはプログラムの実行時に行われます。 アプリケーションのパフォーマンスの低下など、遅延バインディングを回避する必要がある理由は多数あります。

オブジェクト変数を作成すると、プログラムのコンパイル時に事前バインディング (つまりバインド) が発生します。 そのためには、[プロジェクト] メニューの [参照の追加] ダイアログ ボックスの [COM] タブから、オブジェクトのタイプ ライブラリへの参照を追加します。 次に、オブジェクトの特定の型のオブジェクト変数を宣言します。 ほとんどの場合、 ステートメントとプライマリ相互運用機能アセンブリを Dim 使用して、 関数を使用 CreateObject するよりもオブジェクトを作成する方が効率的です。

アンマネージド コードの操作

もう 1 つの問題は、COM オブジェクトがアンマネージ コード (共通言語ランタイムの利点を持たないコード) を使用することです。 Visual Basic のマネージド コードと COM のアンマネージド コードの混在には、かなりの複雑さが伴います。 COM オブジェクトへの参照を追加すると、Visual Basic はそのライブラリのプライマリ相互運用機能アセンブリ (PIA) を検索します。見つかると、それを使用します。 PIA が見つからない場合は、COM ライブラリ内の各クラスのローカル相互運用性クラスを含む相互運用性アセンブリが作成されます。 詳細については、「.NET Framework アプリケーションにおける COM 相互運用性」を参照してください。

通常は、可能な限り、厳密にバインドされたオブジェクトとプライマリ相互運用機能アセンブリを使用する必要があります。 次の例では、 CreateObject デモ目的でのみ Microsoft Office オブジェクトと共に 関数を使用します。 ただし、これらのオブジェクトは、適切なプライマリ相互運用機能アセンブリと共に使用すると、使いやすく、信頼性が高くなります。

リモート コンピューターでのオブジェクトの作成

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

注意

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

次のコードは、 という名前 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 つだけ作成されます。

フレームワーク オブジェクトの作成

関数は、 CreateObject COM オブジェクトを作成する場合にのみ使用できます。 .NET Framework オブジェクトを作成するための正確な同等のメカニズムはありませんが、Activator名前空間の にはSystemローカル オブジェクトまたはリモート オブジェクトを作成するメソッドが含まれています。 特に、 CreateInstance メソッドまたは メソッドが CreateInstanceFrom 役立つ場合があります。

重要

関数には CreateObject アンマネージ コードのアクセス許可が必要です。これは、部分信頼の状況での実行に影響を与える可能性があります。 詳細については、「SecurityPermission」および「コード アクセス許可」を参照してください。

適用対象

こちらもご覧ください