Interaction.CreateObject(String, String) Methode

Definition

Erstellt und gibt einen Verweis auf ein COM-Objekt zurück. CreateObject kann in Visual Basic nur dann zur Erstellung von Klasseninstanzen verwendet werden, wenn diese explizit als COM-Komponenten verfügbar gemacht werden.

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

Parameter

ProgId
String

Erforderlich. 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 eine leere Zeichenfolge ("") ist, wird der lokale Computer verwendet.

Gibt zurück

Erstellt und gibt einen Verweis auf ein COM-Objekt zurück. CreateObject kann in Visual Basic nur dann zur Erstellung von Klasseninstanzen verwendet werden, wenn diese explizit als COM-Komponenten verfügbar gemacht werden.

Attribute

Ausnahmen

Server ist nicht verfügbar

Es ist kein Objekt des angegebenen Typs vorhanden.

Beispiele

Im folgenden Beispiel wird die CreateObject -Funktion verwendet, um ein Microsoft Excel-Arbeitsblatt zu erstellen und das Arbeitsblatt in einer Datei zu speichern. Um dieses Beispiel verwenden zu können, muss Excel auf dem Computer installiert sein, auf dem dieses Programm ausgeführt wird. Außerdem müssen Sie auf der Registerkarte COM des Dialogfelds Verweis hinzufügen im Menü Projekt einen Verweis auf die Typbibliothek hinzufügen. Der Name der Typbibliothek hängt von der auf Ihrem Computer installierten Excel-Version ab. 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 zurückgegebene Objekt einer Objektvariablen 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 jeden Objekttyp enthalten kann. Der Zugriff auf das Objekt über diese Variable ist jedoch spät gebunden, d. h. die Bindung erfolgt, wenn Das Programm ausgeführt wird. Es gibt viele Gründe, warum Sie eine späte Bindung vermeiden sollten, einschließlich einer geringeren Anwendungsleistung.

Sie können eine Objektvariable erstellen, die zu einer frühen Bindung führt, d. h. die Bindung, wenn das Programm kompiliert wird. Fügen Sie dazu auf der Registerkarte COM des Dialogfelds Verweis hinzufügen im Menü Projekt einen Verweis auf die Typbibliothek für Ihr Objekt hinzu. Deklarieren Sie dann die Objektvariable des spezifischen Typs Ihres 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 verwaltetem Code

Ein weiteres Problem besteht darin, dass COM-Objekte nicht verwalteten Code verwenden– Code ohne den Vorteil der Common Language Runtime. Die Vermischung des verwalteten Codes von Visual Basic mit nicht verwaltetem Code von COM ist sehr komplex. Wenn Sie einen Verweis auf ein COM-Objekt hinzufügen, sucht Visual Basic nach einer primären Interopassembly (PIA) für diese Bibliothek. wenn es eine findet, wird es 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 im Allgemeinen nach Möglichkeit stark gebundene Objekte und primäre Interopassemblys verwenden. In den folgenden Beispielen wird die CreateObject Funktion mit Microsoft Office-Objekten nur zu Demonstrationszwecken 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 ist identisch mit dem Computernamenteil eines Freigabenamens: Für eine Freigabe mit dem Namen "\\MyServer\Public" ServerName ist "MyServer".

Hinweis

Weitere Informationen zum Zugänglichmachen einer Anwendung auf einem Remotenetzwerkcomputer finden Sie in der COM-Dokumentation (siehe Microsoft Developer Network). Möglicherweise müssen Sie einen Registrierungsschlüssel für Ihre Anwendung hinzufügen.

Der folgende Code gibt die Versionsnummer einer Instanz 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 Name des Remoteservers falsch ist oder nicht verfügbar ist, tritt ein Laufzeitfehler auf.

Hinweis

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

Erstellen von Frameworkobjekten

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, aber der ActivatorSystem im -Namespace enthält Methoden zum Erstellen von lokalen oder Remoteobjekten. Insbesondere kann die CreateInstance -Methode oder die CreateInstanceFrom -Methode nützlich sein.

Wichtig

Die CreateObject Funktion erfordert eine nicht verwaltete Codeberechtigung, die sich in teilweise vertrauenswürdigen Situationen auf die Ausführung auswirken kann. Weitere Informationen finden Sie unter SecurityPermission und Codezugriffsberechtigungen.

Gilt für:

Weitere Informationen