image

Comme son nom l’indique, la fonction CreateObject est utilisée pour créer des objets. Mais pourquoi utilisons-nous la méthode ou la fonction CreateObject si nous pouvons directement créer un objet en utilisant le nouveau mot-clé? Eh bien, c’est une question valable et nous avons une réponse appropriée. La création d’un objet à l’aide de CreateObject s’appelle Late Binding *. Dans la liaison tardive, la création d’objets se produit au moment de l’exécution. Il n’est pas nécessaire d’ajouter des références. Cela rend le code VBA portable.

Par exemple, si vous créez une application qui traite d’autres applications et que vous utilisez la liaison anticipée en ajoutant des références et en utilisant le nouveau mot clé *. Plus tard, vous transférez ce code sur une autre machine, puis vous devrez également ajouter les références sur cette machine.

Mais si vous avez utilisé la méthode CreateObject pour créer d’autres objets d’application, vous n’aurez pas besoin d’ajouter les références sur d’autres machines, au cas où vous transférez ou partagez le code.

Dans cet article, nous allons découvrir la méthode CreateObject à l’aide de quelques exemples.

Syntaxe de la fonction CreateObject:

Set object_name= CreateObject(classname as string,[servername])

classname as string: C’est une variable obligatoire. C’est une chaîne qui fait référence au nom de l’application et au type d’objet. Le nom de l’application et la classe de l’objet à créer doivent être déclarés dans AppName.ObjecType. Par exemple, si je veux un objet de Word Application, j’écrirais « Word.Application ». Nous le verrons en détail dans des exemples plus tard.

[nom du serveur]: c’est une variable facultative. Il s’agit d’une chaîne du nom du serveur réseau sur lequel l’objet sera créé. Si le nom du serveur est une chaîne vide («  »), la machine locale est utilisée. Nous n’utiliserons pas cela dans ce chapitre.

Maintenant que nous connaissons les bases de la fonction CreateObject, utilisons-les dans quelques exemples:

Exemple 1: Ouvrir une application Microsoft Word en utilisant Excel VBA Donc, si nous voulions utiliser la liaison anticipée, nous ajouterions des références aux applications Word en utilisant le menu Outils → Références.

image

Et notre code ressemblerait à ceci.

Sub OpenWordApp()

Dim wordApp As New Word.Application

Dim wordDoc As Document

wordApp.Visible = True

wordDoc = wordApp.Documents.Add

End Sub

L’avantage de ce code, c’est que vous obtenez l’aide de l’intellensence de VBA et qu’il vous montre la méthode disponible et les propriétés de l’objet que vous avez créé.Il fonctionnera parfaitement bien votre système. Mais, si vous partagez ce code avec quelqu’un d’autre et qu’il n’a pas ajouté la référence à la bibliothèque Microsoft Word à partir d’outils, il obtiendra une erreur.

image

Pour éviter cette erreur, utilisez le code ci-dessous.

Sub OpenWordApp()

Dim wordApp As Object



Set wordApp = CreateObject("Word.Application")



Dim wordDoc As Object

wordApp.Visible = True

Set wordDoc = wordApp.Documents.Add

End Sub

Le code ci-dessus fonctionnera parfaitement sur n’importe quelle machine. Il est portable car nous faisons une liaison tardive en utilisant la méthode CreateObject pour créer l’objet.

Voyons un autre exemple:

Exemple 2: création d’un objet de classeur à l’aide de la fonction CreateObject Si vous travaillez avec VBA pendant un certain temps, vous devez avoir créé ou ajouté des classeurs à l’aide du mot clé Nouveau. Dans cet exemple, nous le ferons en utilisant CreateObject.

Sub addSheet()



' Declare an object variable to hold the object

' reference. Dim as Object causes late binding.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

' 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

End Sub

Alors oui les gars, voici comment vous utilisez la méthode CreateObject dans VBA. Discutons des avantages et des inconvénients de celui-ci.

Avantages de CreateObject pour créer un objet Le principal avantage de CreateObject est qu’il rend votre code portable (lorsque la création d’objet est la préoccupation). Vous pouvez partager le code avec n’importe qui sans vous soucier de savoir s’ils ont ajouté la référence au programme objet en utilisant ou non.

Lacune de CreateObject

Les lacunes de la méthode CreateObject sont:

Vous devez connaître la structure de la classe que vous allez utiliser pour la création d’objets.

Une fois que vous avez créé l’objet, vous êtes totalement dépendant de votre mémoire pour les méthodes et les propriétés des objets, car VBA ne fournit aucune intelligence pour vous aider.

Nous pouvons surmonter les lacunes ci-dessus. J’ai un truc.

Chaque fois que j’écris du code qui sera partagé avec d’autres, j’utilise la première méthode pour créer des objets (Ajout de références à partir d’outils). Cela m’aide à écrire le code plus rapidement. Une fois que j’ai terminé le programme VBA et l’ai testé, je remplace la méthode New par la méthode CreateObject. Cela rend le code portable. Vous pouvez utiliser cette astuce.

Alors oui les gars, voici comment vous pouvez utiliser la fonction CreateObject pour créer des objets dans VBA. J’espère avoir tout expliqué. Si vous avez des questions concernant cet article ou toute autre question liée à VBA, posez-les moi dans la section commentaires ci-dessous.

Articles liés:

link: / applications-word-outlook-in-vba-getting-started-with-excel-vba-userforms [Premiers pas avec Excel VBA UserForms] | * Je vais vous expliquer comment créer un formulaire dans Excel, comment l’utiliser Boîte à outils VBA, comment gérer les entrées utilisateur et enfin comment stocker les entrées utilisateur. Nous allons parcourir ces sujets en utilisant un exemple et un guide étape par étape.

lien: / general-topics-in-vba-vba-variables-in-excel [Variables VBA dans Excel] | * VBA signifie Visual Basic pour Applications.

C’est un langage de programmation de Microsoft. Il est utilisé avec les applications Microsoft Office telles que MSExcel, MS-Word et MS-Access, tandis que les variables VBA sont des mots-clés spécifiques.

link: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope] | * Dans tous les langages de programmation, nous avons des spécificateurs d’accès aux variables qui définissent d’où une variable définie peut être accédée. Excel VBA ne fait pas exception. VBA a également des spécificateurs de portée.

lien: / cells-ranges-rows-and-columns-in-vba-quelle-est-la-difference-entre-byref-and-byval-arguments-vba-interview-question [Arguments ByRef et ByVal] | Lorsqu’un argument est passé en tant qu’argument ByRef à un autre sous ou fonction, la référence de la variable réelle est envoyée. Toutes les modifications apportées à la copie de la variable seront reflétées dans l’argument d’origine.

lien: / files-workbook-and-worksheets-in-vba-delete-sheets-sans-confirmation-invites-using-vba-in-microsoft-excel [Supprimer les feuilles sans invites de confirmation en utilisant VBA dans Microsoft Excel] | Puisque vous supprimez des feuilles à l’aide de VBA, vous savez ce que vous faites.

Vous voudriez dire à Excel de ne pas afficher cet avertissement et de supprimer la fichue feuille.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur en utilisant VBA dans Microsoft Excel 2016] | Dans ce code, nous avons d’abord créé une référence à un objet de classeur. Et puis nous l’avons initialisé avec un nouvel objet classeur. L’avantage de cette approche est que vous pouvez effectuer facilement des opérations sur ce nouveau classeur. Comme enregistrer, fermer, supprimer, etc `link: / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Afficher un message sur La barre d’état Excel VBA *] `| La barre d’état dans Excel peut être utilisée comme moniteur de code. Lorsque votre code VBA est long et que vous effectuez plusieurs tâches à l’aide de VBA, vous désactivez souvent la mise à jour de l’écran pour ne pas voir cet écran scintiller.

lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016] | * Ce code désactive non seulement VBA alertes mais augmente également l’efficacité temporelle du code. Voyons comment.

Articles populaires:

lien: / clavier-formule-raccourcis-50-excel-raccourcis-pour-augmenter-votre-productivité [50 raccourcis Excel pour augmenter votre productivité] | Accélérez votre tâche. Ces 50 raccourcis vous permettront de travailler encore plus rapidement sur Excel.

lien: / formules-et-fonctions-introduction-de-vlookup-function [La fonction RECHERCHEV dans Excel] | C’est l’une des fonctions les plus utilisées et les plus populaires d’Excel qui est utilisée pour rechercher des valeurs à partir de différentes plages et feuilles. lien: / tips-countif-in-microsoft-excel [COUNTIF dans Excel 2016] | Comptez les valeurs avec des conditions en utilisant cette fonction étonnante. Vous n’avez pas besoin de filtrer vos données pour compter des valeurs spécifiques.

La fonction Countif est indispensable pour préparer votre tableau de bord.

lien: / excel-formule-et-fonction-excel-sumif-function [Comment utiliser la fonction SUMIF dans Excel] | C’est une autre fonction essentielle du tableau de bord. Cela vous aide à résumer les valeurs sur des conditions spécifiques.