Interaction.CreateObject(String, String) Methode

Definition

Erstellt und gibt einen Verweis auf ein COM-Objekt zurück. CreateObject kann nicht verwendet werden, um Instanzen von Klassen in Visual Basic zu erstellen, es sei denn, diese Klassen werden explizit als COM-Komponenten verfügbar gemacht.

public static object CreateObject(string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

Parameter

ProgId
String

Required. String. Die Programm-ID des zu erstellenden Objekts.

ServerName
String

Dies ist optional. String. Der Name des Netzwerkservers, auf dem das Objekt erstellt wird. Wenn ServerName es sich um eine leere Zeichenfolge ("") handelt, wird der lokale Computer verwendet.

Gibt zurück

Erstellt und gibt einen Verweis auf ein COM-Objekt zurück. CreateObject kann nicht verwendet werden, um Instanzen von Klassen in Visual Basic zu erstellen, es sei denn, diese Klassen werden explizit als COM-Komponenten verfügbar gemacht.

Ausnahmen

Der Server ist nicht verfügbar.

Es ist kein Objekt des angegebenen Typs vorhanden.

Beispiele

Im folgenden Beispiel wird die Funktion CreateObject verwendet, um ein Microsoft Excel Arbeitsblatt zu erstellen und das Arbeitsblatt in einer Datei zu speichern. Um dieses Beispiel zu verwenden, muss Excel auf dem Computer installiert sein, auf dem dieses Programm ausgeführt wird. Darüber hinaus müssen Sie über das Dialogfeld COM der Registerkarte Weitere Referenz im Menü Project einen Verweis auf die Typbibliothek hinzufügen. Der Name der Typbibliothek variiert je nach version von Excel auf Ihrem Computer installiert. Die Typbibliothek für Microsoft Excel 2002 heißt beispielsweise Microsoft Excel 10.0-Objektbibliothek.

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

Hinweise

Um eine Instanz einer COM-Komponente zu erstellen, weisen Sie das von CreateObject einer Objektvariable zurückgegebene Objekt zu:

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

Der Typ der Objektvariable, die Sie zum Speichern des zurückgegebenen Objekts verwenden, kann sich auf die Leistung Ihrer Anwendung auswirken. Wenn Sie eine Objektvariable mit der As Object -Klausel deklarieren, wird eine Variable erstellt, die einen Verweis auf einen beliebigen Objekttyp enthalten kann. Der Zugriff auf das Objekt über diese Variable ist jedoch spät gebunden, d. h. die Bindung tritt auf, wenn das Programm ausgeführt wird. Es gibt viele Gründe, warum Sie späte Bindung vermeiden sollten, einschließlich langsamerer Anwendungsleistung.

Sie können eine Objektvariable erstellen, die zu einer frühen Bindung führt, d. h. bindung, wenn das Programm kompiliert wird. Fügen Sie dazu im Dialogfeld Project2>>< Im Menü Project einen Verweis auf die Typbibliothek für Ihr Objekt für Das Objekt aus dem Dialogfeld COM> < hinzu. Deklarieren Sie dann die Objektvariable des bestimmten Typs des Objekts. In den meisten Fällen ist es effizienter, die Dim Anweisung und eine primäre Interopassembly zum Erstellen von Objekten zu verwenden, als die CreateObject Funktion zu verwenden.

Interagieren mit nicht verwalteten Code

Ein weiteres Problem besteht darin, dass COM-Objekte nicht verwalteten Code verwenden – Code ohne den Vorteil der Common Language Runtime. Es gibt ein gewisses Maß an Komplexität, um den verwalteten Code von Visual Basic mit nicht verwaltetem Code von COM zu mischen. Wenn Sie einen Verweis auf ein COM-Objekt hinzufügen, sucht Visual Basic nach einer primären Interopassembly (PIA) für diese Bibliothek. Wenn ein Verweis gefunden wird, wird er verwendet. Wenn keine PIA gefunden wird, wird eine Interoperabilitätsassembly erstellt, die lokale Interoperabilitätsklassen für jede Klasse in der COM-Bibliothek enthält. Weitere Informationen finden Sie unter COM-Interoperabilität in .NET Framework-Anwendungen.

Sie sollten grundsätzlich stark gebundene Objekte und primäre Interopassemblys verwenden, wenn möglich. In den folgenden Beispielen wird die funktion CreateObject nur für Demonstrationszwecke mit Microsoft Office Objekten verwendet. Diese Objekte sind jedoch einfacher zu verwenden und zuverlässiger, wenn sie mit der entsprechenden primären Interopassembly verwendet werden.

Erstellen eines Objekts auf einem Remotecomputer

Sie können ein Objekt auf einem Remotenetzwerkcomputer erstellen, indem Sie den Namen des Computers an das ServerName Argument der CreateObject Funktion übergeben. Dieser Name entspricht dem Computernamenteil eines Freigabenamens: Für eine Freigabe mit dem Namen "\\MyServer\Public" lautet "MyServer" ServerName .

Note

Weitere Informationen zum Erstellen einer Anwendung, auf die auf einem Remotenetzwerkcomputer zugegriffen werden kann, finden Sie in der COM-Dokumentation (siehe MSDN). Möglicherweise müssen Sie einen Registrierungsschlüssel für Ihre Anwendung hinzufügen.

Der folgende Code gibt die Versionsnummer einer instance von Excel zurück, die auf einem Remotecomputer namens MyServerausgeführt wird:

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

Wenn der Remoteservername falsch ist oder nicht verfügbar ist, tritt ein Laufzeitfehler auf.

Note

Wird verwendet CreateObject , wenn keine aktuelle Instanz des Objekts vorhanden ist. Wird bereits eine Instanz des Objekts ausgeführt, wird eine neue Instanz gestartet und ein Objekt des angegebenen Typs erstellt. Um die aktuelle Instanz zu verwenden oder die Anwendung zu starten und eine Datei zu laden, verwenden Sie die GetObject Funktion. Wenn sich ein Objekt selbst als Eininstanzobjekt registriert hat, wird nur eine Instanz des Objekts erstellt, unabhängig davon, wie oft CreateObject ausgeführt wird.

Erstellen von Framework-Objekten

Sie können die CreateObject Funktion nur verwenden, um ein COM-Objekt zu erstellen. Es gibt zwar keinen genauen äquivalenten Mechanismus zum Erstellen eines .NET Framework-Objekts, die Activator im Namespace System enthält Methoden zum Erstellen lokaler oder Remoteobjekte. Insbesondere kann die CreateInstance Methode oder die CreateInstanceFrom Methode nützlich sein.

Important

Die CreateObject Funktion erfordert nicht verwaltete Codeberechtigungen, die sich auf die Ausführung in teilweise vertrauenswürdigen Situationen auswirken können. Weitere Informationen finden Sie unter SecurityPermission den Berechtigungen für den Codezugriff.

Gilt für:

Weitere Informationen