Interaction.CreateObject(String, String) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 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 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.