Remarque : La fonction, la méthode, l’objet ou la propriété décrite dans cette rubrique est désactivée 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 retourne 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. Variant (String). Nom de l’application et classe de l’objet à créer. |
Servername |
Facultatif. Variant (String). Nom du serveur réseau dans lequel l’objet sera créé. Si servername est une chaîne vide (« »), l’ordinateur local est utilisé. |
La classeargument utilise la syntaxe appname.objecttype et contient les éléments suivants :
Partie |
Description |
Appname |
Obligatoire. Variant (String). Nom de l’application fournissant l’objet. |
Objecttype |
Obligatoire. Variant (String). Type ou classe de l’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 Toolbar .
Pour créer un objet ActiveX, affectez l’objet retourné par CreateObject à un variable 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 du développeur dans la liste déroulante en regard de Rechercher et 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 de 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 objet que vous avez définie. Dans l’exemple suivant, vous accédez aux propriétés et méthodes du nouvel objet à l’aide de la variable objet, ExcelSheetet d’autres objets Excel, y compris l’objet Application et la collection Cells .
' 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 clause As Object 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 ; 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 offrir de meilleures performances, mais ne peut contenir qu’une référence aux classe spécifiées dans le déclaration.
Vous pouvez passer un objet retourné par la fonction CreateObject à une fonction qui attend 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 réseau distant en passant le nom de l’ordinateur à l’argument servername de CreateObject. Ce nom est identique à la partie Nom de l’ordinateur d’un nom de partage : pour un partage nommé « \\MyServer\Public », le nom du serveur est « MyServer ».
Remarque : Reportez-vous à la documentation COM (voir Microsoft Developer Network) pour plus d’informations sur la visibilité 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 exécuté 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 le instance actuel, ou pour démarrer l’application et 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
) à Excel. Il utilise la référence pour accéder à la propriété Visible d’Excel, puis utilise la méthode Quit Excel pour la fermer. Enfin, la référence elle-même est libéré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.