Interaction.CreateObject(String, String) Méthode

Définition

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.

S’applique à

Voir aussi