Interaction.CreateObject(String, String) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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.