CreateObject-Funktion (Visual Basic)

Aktualisiert: November 2007

Erstellt einen Verweis auf ein COM-Objekt und gibt diesen 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 Shared Function CreateObject( _
   ByVal ProgId As String, _
   Optional ByVal ServerName As String = "" _
) As Object

Parameter

  • ProgId
    Erforderlich. String. Die Programm-ID des zu erstellenden Objekts.

  • ServerName
    Optional. String. Der Name des Netzwerkservers, auf dem das Objekt erstellt werden soll. Wenn ServerName eine leere Zeichenfolge ("") ist, wird der lokale Computer verwendet.

Ausnahmen

Ausnahmetyp

Fehlernummer

Bedingung

Exception

429

ProgId nicht gefunden oder nicht angegeben.

- oder -

ServerName wird von der DnsValidateName-Funktion nicht akzeptiert. Die Ursache ist normalerweise, dass der Name länger als 63 Zeichen ist oder ein ungültiges Zeichen enthält.

Exception

462

Server ist nicht verfügbar

FileNotFoundException

53

Es ist kein Objekt des angegebenen Typs vorhanden.

Beachten Sie die Spalte "Fehlernummer", wenn Sie Visual Basic 6.0-Anwendungen aktualisieren, die eine unstrukturierte Fehlerbehandlung verwenden. (Sie können die Fehlernummer mit der Number-Eigenschaft (Err-Objekt) vergleichen.) Wenn möglich, sollten Sie jedoch erwägen, eine solche Fehlersteuerung durch eine Übersicht über die strukturierte Ausnahmebehandlung für Visual Basic zu ersetzen.

Hinweise

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

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

Der Typ der Objektvariablen, die Sie zum Speichern des zurückgegebenen Objekts verwenden, kann Auswirkungen auf die Leistung der Anwendung haben. 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 erfolgt, wenn das Programm ausgeführt wird. Spätes Binden sollte aus vielerlei Gründen vermieden werden, z. B., weil es die Anwendungsleistung beeinträchtigt.

Sie können eine Objektvariable erstellen, die zu früher Bindung führt, d. h. die Bindung erfolgt, wenn das Programm kompiliert wird. Fügen Sie hierzu einen Verweis auf die Typbibliothek für das Objekt ein, indem Sie über das Menü Projekt das Dialogfeld Verweis hinzufügen öffnen und auf der Registerkarte COM die betreffende Typbibliothek auswählen und hinzufügen. Deklarieren Sie dann die Objektvariable mit dem betreffenden Objekttyp. In den meisten Fällen ist es effizienter, Objekte mit der Dim-Anweisung und einer primären Interop-Assembly zu erstellen, als hierfür die CreateObject-Funktion zu verwenden.

Interagieren mit nicht verwaltetem Code

Ein weiteres Problem ist, dass COM-Objekte nicht verwalteten Code verwenden, d. h. Code, der nicht die Vorteile der Common Language Runtime (CLR) nutzt. Es ist relativ aufwändig, den verwalteten Code von Visual Basic mit dem nicht verwalteten Code von COM-Objekten zu kombinieren. Wenn Sie einen Verweis auf ein COM-Objekt hinzufügen, sucht Visual Basic nach einer primären Interop-Assembly (PIA) für die betreffende Bibliothek und verwendet diese, sofern eine PIA gefunden wird. Falls keine PIA gefunden wird, wird eine Interoperabilitätsassembly erstellt, die die lokalen Interoperabilitätsklassen für alle in der COM-Bibliothek enthaltenen Klassen enthält. Weitere Informationen hierzu finden Sie unter COM-Interoperabilität in .NET Framework-Anwendungen.

Verwenden Sie grundsätzlich wenn möglich strikt gebundene Objekte und primäre Interop-Assemblys. In den folgenden Beispielen wird die CreateObject-Funktion nur zu Demonstrationszwecken für Microsoft Office-Objekte verwendet. Diese Objekte sind jedoch einfacher zu verwenden und zuverlässiger, wenn Sie sie mit der entsprechenden primären Interop-Assembly verwenden.

Erstellen eines Objekts auf einem Remotecomputer

Sie können ein Objekt auf einem Remote-Netzwerkcomputer erstellen, indem Sie den Computernamen an das ServerName-Argument der CreateObject-Funktion übergeben. Dieser Name entspricht der Computerangabe in einem Freigabenamen: Für den Freigabenamen "\\MyServer\Public" lautet ServerName "MyServer".

Hinweis:

Weitere Informationen über den Zugriff auf eine Anwendung auf einem Remote-Netzwerkcomputer finden Sie in der COM-Dokumentation (unter MSDN). Sie müssen unter Umständen einen Registrierungsschlüssel für die Anwendung hinzufügen.

Der nachstehend aufgeführte Code gibt die Versionsnummer einer Excel-Instanz zurück, die auf dem Remotecomputer MyServer ausgefü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 angegebene Remote-Servername falsch oder nicht vorhanden 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 erstellt. Verwenden Sie die GetObject-Funktion, um die aktuelle Instanz zu verwenden oder die Anwendung zu starten und eine Datei darin zu laden. Wenn sich ein Objekt als Einzelinstanzobjekt registriert hat, wird nur eine einzige Instanz dieses Objekts erstellt, unabhängig davon, wie oft CreateObject ausgeführt wird.

Erstellen von Framework-Objekten

Mit der CreateObject-Funktion können Sie nur COM-Objekte erstellen. Obwohl es keinen ganz äquivalenten Mechanismus zur Erstellung von .NET Framework-Objekten gibt, enthält die Activator-Klasse im System-Namespace Methoden zum Erstellen von lokalen Objekten und Remoteobjekten. Insbesondere kann die CreateInstance-Methode oder die CreateInstanceFrom-Methode nützlich sein.

Sicherheitshinweis:

Die CreateObject-Funktion erfordert eine Berechtigung für nicht verwalteten Code. Dies könnte sich auf ihre Ausführung in teilweise vertrauenswürdigen Kontexten auswirken. Weitere Informationen finden Sie unter SecurityPermission und Codezugriffsberechtigungen.

Beispiel

In diesem Beispiel wird mit der CreateObject-Funktion ein Microsoft Excel-Arbeitsblatt erstellt und dann in einer Datei gespeichert. Um dieses Beispiel verwenden zu können, muss Excel auf dem Computer installiert sein, auf dem dieses Programm ausgeführt wird. Zudem müssen Sie einen Verweis auf die Typbibliothek für das Objekt hinzufügen, indem Sie im Menü Projekt das Dialogfeld Verweis hinzufügen öffnen und auf der Registerkarte COM die betreffende Typbibliothek auswählen und hinzufügen. Der Name der Typbibliothek hängt von der auf Ihrem Computer installierten Excel-Version ab. Beispielsweise lautet die Typbibliothek für 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

Hinweise für Entwickler intelligenter Geräte

Diese Funktion wird nicht unterstützt.

Anforderungen

Namespace:Microsoft.VisualBasic

Modul:Interaction

**Assembly:**Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

Siehe auch

Referenz

GetObject-Funktion (Visual Basic)

Dim-Anweisung (Visual Basic)

Declare-Anweisung

Exception

FileNotFoundException

Activator

CreateInstance

CreateInstanceFrom

Weitere Ressourcen

COM-Interoperabilität in .NET Framework-Anwendungen

Interaktion mit nicht verwaltetem Code