Fonction CreateObject

S’applique à
Access pour Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Remarque

La fonction, la méthode, l’objet ou la propriété décrits dans cette rubrique est désactivé si le service d’expression Microsoft Jet s’exécute en mode bac à sable, ce qui empêche l’évaluation d’expressions potentiellement dangereuses. Pour plus d’informations sur le mode bac à sable, recherchez « mode bac à sable » dans l’aide.

Crée et renvoie une référence à un objet ActiveX.

Syntaxe

CreateObject(class [, servername] )

La syntaxe de la fonction CreateObject contient les arguments suivants :

Argument Description
classe Obligatoire. Variante (chaîne). Nom de l’application et classe de l’objet à créer.
nom du serveur Facultatif. Variante (chaîne). Nom du serveur réseau sur lequel l’objet sera créé. Si servername est une chaîne vide («  »), l’ordinateur local est utilisé.

    

L’argument de classeutilise la syntaxe appname.objecttype et se compose des éléments suivants :

Partie Description
Nom de l’application Obligatoire. Variante (chaîne). Nom de l’application qui fournit l’objet.
Type d’objet Obligatoire. Variante (chaîne). Type ou classe d’objet à créer.

    

Remarques

Chaque application qui prend en charge l’automatisation fournit au moins un type d’objet. Par exemple, une application de traitement de texte peut fournir un objet Application , un objet Document et un objet Barre d’outils .

Pour créer un objet ActiveX, affectez l’objet renvoyé par CreateObject à une variable d’objet :

Remarque

Les exemples suivants illustrent l’utilisation de cette fonction dans un module Visual Basic pour Applications (VBA). Pour plus d’informations sur l’utilisation de VBA, sélectionnez Référence développeur dans la liste déroulante en regard de Rechercher , puis entrez un ou plusieurs termes dans la zone de recherche.

' Declare an object variable to hold the object 
' reference. Dim as Object causes late binding. 
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")

Dans cet exemple, nous allons automatiser un objet feuille de calcul Excel à partir d’une base de données Access. Ce code démarre l’application qui crée l’objet, dans ce cas, une feuille de calcul Microsoft Excel. Une fois qu’un objet est créé, vous le référencez dans le code à l’aide de la variable d’objet que vous avez définie. Dans l’exemple suivant, vous accédez aux propriétés et aux méthodes du nouvel objet à l’aide de la variable ExcelSheetobjet et d’autres objets Excel, dont l’objet et la ApplicationCells collection.

' Make Excel visible through the Application object.
ExcelSheet.Application.Visible = True
' Place some text in the first cell of the sheet.
ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1"
' Save the sheet to C:\test.xls directory.
ExcelSheet.SaveAs "C:\TEST.XLS"
' Close Excel with the Quit method on the Application object.
ExcelSheet.Application.Quit
' Release the object variable.
Set ExcelSheet = Nothing

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. Cependant, l’accès à l’objet via cette variable est lié tardivement ; autrement dit, la liaison se produit lorsque votre programme est exécuté. Pour créer une variable objet qui entraîne une liaison anticipée, c’est-à-dire une liaison lors de la compilation du programme, déclarez la variable objet avec un ID de classe spécifique. Par exemple, vous pouvez déclarer et créer les références Excel suivantes :

Dim xlApp As Excel.Application 
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.WorkSheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)

La référence via une variable à liaison anticipée peut donner de meilleures performances, mais ne peut contenir qu’une référence à la classe spécifiée dans la déclaration.

Vous pouvez passer un objet renvoyé par la fonction CreateObject à une fonction attendant un objet en tant qu’argument. Par exemple, le code suivant crée et transmet une référence à un objet Excel.Application :

Call MySub (CreateObject("Excel.Application"))

Vous pouvez créer un objet sur un ordinateur distant en réseau en transmettant le nom de l’ordinateur à l’argument servername de CreateObject. Ce nom est identique à la partie Nom d’ordinateur d’un nom de partage : pour un partage nommé « \\MonServeur\Public », le nom du serveur est « MonServeur ».

Remarque

Reportez-vous à la documentation COM (voir Microsoft Developer Network) pour plus d’informations sur la façon de rendre une application visible sur un ordinateur distant en réseau. Vous devrez peut-être ajouter une clé de Registre pour votre application.

Le code suivant renvoie le numéro de version d’une instance d’Excel exécutée sur un ordinateur distant nommé MyServer:

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MyServer")
Debug.Print xlApp.Version

Si le serveur distant n’existe pas ou n’est pas disponible, une erreur d’exécution se produit.

Remarque

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 lui faire charger un fichier, utilisez la fonction GetObject.

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 d’exécutions de CreateObject.

Exemple

Cet exemple utilise la fonction CreateObject pour définir une référence (

xlApp

) vers Excel. Il utilise la référence pour accéder à la propriété Visible d’Excel, puis utilise la méthode Excel Quit pour la fermer. Enfin, la référence elle-même est publiée.

Dim xlApp As Object    ' Declare variable to hold the reference.
Set xlApp = CreateObject("excel.application")
    ' You may have to set Visible property to True
    ' if you want to see the application.
xlApp.Visible = True
    ' Use xlApp to access Microsoft Excel's 
    ' other objects.
xlApp.Quit    ' When you finish, use the Quit method to close 
Set xlApp = Nothing    ' the application, then release the reference.