Interaction.CreateObject(String, String) Methode

Definitie

Hiermee maakt en retourneert u een verwijzing naar een COM-object. CreateObject kan niet worden gebruikt om exemplaren van klassen in Visual Basic te maken, tenzij deze klassen expliciet als COM-onderdelen worden weergegeven.

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

Parameters

ProgId
String

Required. String. De programma-id van het object dat moet worden gemaakt.

ServerName
String

Optional. String. De naam van de netwerkserver waarop het object wordt gemaakt. Als ServerName het een lege tekenreeks ("") is, wordt de lokale computer gebruikt.

Retouren

Hiermee maakt en retourneert u een verwijzing naar een COM-object. CreateObject kan niet worden gebruikt om exemplaren van klassen in Visual Basic te maken, tenzij deze klassen expliciet als COM-onderdelen worden weergegeven.

Uitzonderingen

Server is niet beschikbaar

Er bestaat geen object van het opgegeven type.

Voorbeelden

In het volgende voorbeeld wordt de functie CreateObject gebruikt om een Microsoft Excel werkblad te maken en het werkblad op te slaan in een bestand. Als u dit voorbeeld wilt gebruiken, moet Excel worden geïnstalleerd op de computer waarop dit programma wordt uitgevoerd. U moet ook een verwijzing toevoegen naar de typebibliotheek op het tabblad COM van het dialoogvenster Toevoegen in het menu Project. De naam van de typebibliotheek is afhankelijk van de versie van Excel geïnstalleerd op uw computer. De typebibliotheek voor Microsoft Excel 2002 heeft bijvoorbeeld de naam Microsoft Excel 10.0 Objectbibliotheek.

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

Opmerkingen

Als u een exemplaar van een COM-onderdeel wilt maken, wijst u het object toe dat door CreateObject een objectvariabele wordt geretourneerd:

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

Het type objectvariabele dat u gebruikt om het geretourneerde object op te slaan, kan van invloed zijn op de prestaties van uw toepassing. Als u een objectvariabele declareren met de As Object component, maakt u een variabele die een verwijzing naar elk type object kan bevatten. Toegang tot het object via die variabele is echter te laat gebonden, dat wil gezegd, de binding vindt plaats wanneer uw programma wordt uitgevoerd. Er zijn veel redenen waarom u late binding moet voorkomen, inclusief tragere toepassingsprestaties.

U kunt een objectvariabele maken die resulteert in vroege binding, dat wil gezegd binding wanneer het programma wordt gecompileerd. Voeg hiervoor een verwijzing toe naar de typebibliotheek voor uw object via het tabblad COM van het Toevoegingsvenster in het menu Project. Declareer vervolgens de objectvariabele van het specifieke type van uw object. In de meeste gevallen is het efficiënter om de Dim instructie en een primaire interop-assembly te gebruiken om objecten te maken dan het gebruik van de CreateObject functie.

Interactie met niet-beheerde code

Een ander probleem is dat COM-objecten onbeheerde code gebruiken- code zonder het voordeel van de algemene taalruntime. Er is een behoorlijke mate van complexiteit betrokken bij het combineren van de beheerde code van Visual Basic met onbeheerde code van COM. Wanneer u een verwijzing naar een COM-object toevoegt, Visual Basic zoekt naar een primaire interop assembly (CSS) voor die bibliotheek. Als deze wordt gevonden, wordt deze gebruikt. Als er geen PIA wordt gevonden, wordt er een interoperabiliteitsassembly gemaakt die lokale interoperabiliteitsklassen bevat voor elke klasse in de COM-bibliotheek. Zie COM-interoperabiliteit in .NET Framework-toepassingen voor meer informatie.

U moet over het algemeen waar mogelijk sterk gebonden objecten en primaire interopassembly's gebruiken. In de onderstaande voorbeelden wordt de functie CreateObject met Microsoft Office objecten alleen gebruikt voor demonstratiedoeleinden. Deze objecten zijn echter gemakkelijker te gebruiken en betrouwbaarder wanneer ze worden gebruikt met de juiste primaire interoperabiliteit.

Een object maken op een externe computer

U kunt een object maken op een externe netwerkcomputer door de naam van de computer door te geven aan het ServerName argument van de CreateObject functie. Deze naam is hetzelfde als het gedeelte Computernaam van een sharenaam: voor een share met de naam \\MyServer\Public is ServerName 'MyServer'.

Note

Raadpleeg de COM-documentatie (zie Microsoft Developer Network) voor meer informatie over het toegankelijk maken van een toepassing op een externe netwerkcomputer. Mogelijk moet u een registersleutel voor uw toepassing toevoegen.

De volgende code retourneert het versienummer van een exemplaar van Excel dat wordt uitgevoerd op een externe computer met de naam MyServer:

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

Als de naam van de externe server onjuist is of niet beschikbaar is, treedt er een runtimefout op.

Note

Gebruik CreateObject dit wanneer er geen huidig exemplaar van het object is. Als er al een exemplaar van het object wordt uitgevoerd, wordt er een nieuw exemplaar gestart en wordt er een object van het opgegeven type gemaakt. Als u het huidige exemplaar wilt gebruiken of de toepassing wilt starten en een bestand wilt laden, gebruikt u de GetObject functie. Als een object zich heeft geregistreerd als een object met één exemplaar, wordt er slechts één exemplaar van het object gemaakt, ongeacht hoe vaak CreateObject wordt uitgevoerd.

Frameworkobjecten maken

U kunt de CreateObject functie alleen gebruiken om een COM-object te maken. Hoewel er geen exact equivalent mechanisme is voor het maken van een .NET Framework-object, bevat de Activator in de naamruimte System methoden voor het maken van lokale of externe objecten. Met name de CreateInstance methode of de CreateInstanceFrom methode kan nuttig zijn.

Important

Voor de CreateObject functie is een niet-beheerde codemachtiging vereist, wat van invloed kan zijn op de uitvoering ervan in gedeeltelijke vertrouwenssituaties. Zie en Machtigingen voor codetoegang voor meer informatieSecurityPermission.

Van toepassing op

Zie ook