Interaction.CreateObject(String, String) Méthode

Définition

Crée et retourne une référence à un objet COM. CreateObject ne peut pas être utilisé pour créer des instances de classes dans Visual Basic, sauf si ces classes sont explicitement exposées en tant que composants COM.

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

Paramètres

ProgId
String

Required. String. ID de programme de l’objet à créer.

ServerName
String

Optional. String. Nom du serveur réseau dans lequel l’objet sera créé. S’il ServerName s’agit d’une chaîne vide ( » « ), l’ordinateur local est utilisé.

Retours

Crée et retourne une référence à un objet COM. CreateObject ne peut pas être utilisé pour créer des instances de classes dans Visual Basic, sauf si ces classes sont explicitement exposées en tant que composants COM.

Exceptions

Le serveur n’est pas disponible

Aucun objet du type spécifié n’existe.

Exemples

L’exemple suivant utilise la fonction CreateObject pour créer une feuille de calcul Microsoft Excel et enregistrer la feuille de calcul dans un fichier. Pour utiliser cet exemple, Excel devez ê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 à partir de l’onglet COM de la boîte de dialogue Add Reference dans le menu Project. Le nom de la bibliothèque de types varie en fonction de la version de Excel installée sur votre ordinateur. Par exemple, la bibliothèque de types pour Microsoft Excel 2002 est nommée Microsoft Excel bibliothèque d’objets 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 d’objet :

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

Le type de variable 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 la liaison tardive, notamment les performances des applications plus lentes.

Vous pouvez créer une variable d’objet qui entraîne une liaison anticipée, 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 la boîte de dialogue COM de la boîte de dialogue Add Reference dans le menu Project. 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é principal pour créer des objets que pour utiliser la CreateObject fonction.

Interaction avec du code non managé

Un autre problème est que les objets COM utilisent du code non managé - code sans bénéficier du Common Language Runtime. Il existe un degré de complexité équitable 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 PIA (Primary Interop Assembly) pour cette bibliothèque ; s’il en trouve un, il l’utilise. S’il ne trouve pas d’assembly 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 l’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é principaux dans la mesure du possible. Les exemples ci-dessous utilisent la fonction CreateObject avec des objets Microsoft Office uniquement à des fins de démonstration. Toutefois, ces objets sont plus faciles à utiliser et plus fiables lorsqu’ils sont utilisés avec l’assembly d’interopérabilité principal approprié.

Création d’un objet sur un ordinateur distant

Vous pouvez créer un objet sur un ordinateur 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 ».

Note

Reportez-vous à la documentation COM (voir Microsoft Developer Network) pour plus d’informations sur la mise à disposition d’une application sur un ordinateur 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’un instance d’Excel s’exécutant 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.

Note

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, quelle que soit la durée CreateObject d’exécution.

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, le Activator dans l’espace de noms System contient des 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ée, 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