Interaction.CreateObject(String, String) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Crée et retourne une référence à un objet COM.
CreateObject
ne peut être utilisé pour créer des instances de classes en Visual Basic à moins que ces classes soient exposées explicitement en tant que composants COM.
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
Paramètres
- ProgId
- String
Obligatoire.
String
. ID de programme de l'objet à créer.
- ServerName
- String
Optionnel.
String
. Nom du serveur réseau où l'objet sera créé. Si ServerName
est une chaîne vide (""), l'ordinateur local est utilisé.
Retours
Crée et retourne une référence à un objet COM.
CreateObject
ne peut être utilisé pour créer des instances de classes en Visual Basic à moins que ces classes soient exposées explicitement en tant que composants COM.
- Attributs
Exceptions
Le serveur est indisponible.
Aucun objet du type spécifié n’existe.
Exemples
L’exemple suivant utilise la CreateObject
fonction pour créer une feuille de calcul Microsoft Excel et enregistre la feuille de calcul dans un fichier. Pour utiliser cet exemple, Excel doit être installé sur l’ordinateur sur lequel ce programme s’exécute. Vous devez également ajouter une référence à la bibliothèque de types sous l’onglet COM de la boîte de dialogue Ajouter une référence dans le menu Projet . Le nom de la bibliothèque de types varie en fonction de la version d’Excel installée sur votre ordinateur. Par exemple, la bibliothèque de types pour Microsoft Excel 2002 est nommée Bibliothèque d’objets Microsoft Excel 10.0.
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
Remarques
Pour créer une instance d’un composant COM, affectez l’objet retourné par CreateObject
à une variable objet :
Sub CreateADODB()
Dim adoApp As Object
adoApp = CreateObject("ADODB.Connection")
End Sub
Le type de variable d’objet que vous utilisez pour stocker l’objet retourné peut affecter les performances de votre application. La déclaration d’une variable objet avec la As Object
clause crée une variable qui peut contenir une référence à n’importe quel type d’objet. Toutefois, l’accès à l’objet via cette variable est lié tardivement, c’est-à-dire que la liaison se produit lorsque votre programme s’exécute. Il existe de nombreuses raisons pour lesquelles vous devez éviter une liaison tardive, notamment des performances d’application plus lentes.
Vous pouvez créer une variable d’objet qui aboutit à une liaison précoce, c’est-à-dire une liaison lorsque le programme est compilé. Pour ce faire, ajoutez une référence à la bibliothèque de types de votre objet à partir de l’onglet COM de la boîte de dialogue Ajouter une référence dans le menu Projet . Déclarez ensuite la variable objet du type spécifique de votre objet. Dans la plupart des cas, il est plus efficace d’utiliser l’instruction Dim
et un assembly d’interopérabilité primaire pour créer des objets que d’utiliser la CreateObject
fonction.
Interaction avec du code non managé
Un autre problème est que les objets COM utilisent du code non managé, du code sans bénéficier du Common Language Runtime. Il existe un degré de complexité assez élevé dans le mélange du code managé de Visual Basic avec du code non managé à partir de COM. Lorsque vous ajoutez une référence à un objet COM, Visual Basic recherche un assembly d’interopérabilité principal (PIA) pour cette bibliothèque ; s’il en trouve un, il l’utilise. S’il ne trouve pas d’pia, il crée un assembly d’interopérabilité qui contient des classes d’interopérabilité locales pour chaque classe de la bibliothèque COM. Pour plus d’informations, consultez Interopérabilité COM dans les applications .NET Framework.
Vous devez généralement utiliser des objets fortement liés et des assemblys d’interopérabilité primaire chaque fois que possible. Les exemples ci-dessous utilisent la CreateObject
fonction avec des objets Microsoft Office à des fins de démonstration uniquement. Toutefois, ces objets sont plus faciles à utiliser et plus fiables lorsqu’ils sont utilisés avec l’assembly d’interopérabilité primaire approprié.
Création d’un objet sur un ordinateur distant
Vous pouvez créer un objet sur un ordinateur en réseau distant en passant le nom de l’ordinateur à l’argument ServerName
de la CreateObject
fonction. Ce nom est identique à la partie Nom de l’ordinateur d’un nom de partage : pour un partage nommé « \\MyServer\Public », ServerName
est « MyServer ».
Notes
Reportez-vous à la documentation COM (voir Microsoft Developer Network) pour plus d’informations sur la mise à disposition d’une application sur un ordinateur en réseau distant. Vous devrez peut-être ajouter une clé de Registre pour votre application.
Le code suivant retourne le numéro de version d’une instance d’Excel exécutée sur un ordinateur distant nommé 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
Si le nom du serveur distant est incorrect ou s’il n’est pas disponible, une erreur d’exécution se produit.
Notes
Utilisez CreateObject
lorsqu’il n’existe aucune instance actuelle de l’objet. Si une instance de l’objet est déjà en cours d’exécution, une nouvelle instance est démarrée et un objet du type spécifié est créé. Pour utiliser l’instance actuelle ou pour démarrer l’application et charger un fichier, utilisez la GetObject
fonction . Si un objet s’est inscrit en tant qu’objet à instance unique, une seule instance de l’objet est créée, quel que soit le nombre de fois où CreateObject
elle est exécutée.
Création d’objets framework
Vous pouvez utiliser la CreateObject
fonction uniquement pour créer un objet COM. Bien qu’il n’existe aucun mécanisme équivalent exact pour la création d’un objet .NET Framework, l’espace System de noms contient des Activator méthodes permettant de créer des objets locaux ou distants. En particulier, la CreateInstance méthode ou la CreateInstanceFrom méthode peut être utile.
Important
La CreateObject
fonction nécessite une autorisation de code non managé, ce qui peut affecter son exécution dans des situations de confiance partielle. Pour plus d’informations, consultez SecurityPermission et Autorisations d'accès au code.