VBA ThisWorkbook

Excel VBA ThisWorkbook

VBA ThisWorkbook signifie le classeur dans lequel nous écrivons le code Excel. Par exemple, si vous travaillez dans le classeur nommé «Sales 2019.xlsx», nous nous référons généralement au classeur comme ceci.

Classeurs ("Sales 2019.xlsx"). Activer

Le code activera le classeur nommé «Sales 2019.xlsx».

Au lieu d'écrire comme ça, nous pouvons simplement écrire le code VBA ci-dessous.

ThisWorkbook.Activate '

Ici, ThisWorkbook fait référence au classeur dans lequel nous écrivons le code. En faisant référence à ce mot, nous pouvons exécuter toutes les tâches du classeur actuel et éviter un code trop long avec un nom de classeur entièrement nommé.

Je suis sûr que vous devez également avoir vu le mot «classeur actif» lorsque vous faites référence aux autres codes. C'est aussi l'un des mots souvent utilisés dans le codage. Nous verrons quelles sont les différences entre ces deux mots de base.

Travailler avec ce classeur dans Excel VBA

Le mot de référence «ThisWorkbook» est plus fiable que le qualificatif d'objet Workbooks. L'une des tendances humaines est de taper le nom du classeur de manière incorrecte, ce qui entraîne l'envoi d'un message d'erreur.

Une autre raison importante pour laquelle VBA ThisWorkbook est plus fiable parce que juste au cas où nous changeons le nom du classeur, nous devons modifier le code parce que nous avons utilisé le mot «ThisWorkbook».

Ainsi, ThisWorkbook est plus sûr à utiliser pour faire référence au classeur où nous écrivons le code.

Vous pouvez télécharger ce modèle Excel VBA ThisWorkbook ici - Modèle Excel VBA ThisWorkbook

Exemple 1

Nous verrons quelques exemples où nous pouvons utiliser le mot ThisWorkbook dans Excel VBA. Le code suivant imprimera le nom du classeur.

Code:

 Sub TWB_Example1 () Dim WBName As String WBName = ThisWorkbook.Name MsgBox WBName End Sub 

Lorsque vous exécutez le code manuellement ou à l'aide de la touche F5, le code ci-dessus affichera le nom du classeur dans la boîte de message dans VBA.

Exemple # 2

Au lieu d'utiliser le mot «Ce classeur», nous pouvons utiliser des variables pour définir la référence du classeur et même réduire considérablement la longueur du code dans VBA. Par exemple, regardez d'abord le code ci-dessous.

Code:

 Sub TWB_Example2 () ThisWorkbook.Activate ThisWorkbook.Worksheets ("Sheet1"). Activer ThisWorkbook.Save ThisWorkbook.Close ThisWorkbook.SaveAs End Sub 

Le code ci-dessus a utilisé «ThisWorkbook» dans chaque ligne du code. Comme il est difficile de taper le mot à chaque fois. Nous pouvons donc minimiser cela en utilisant des variables.

Maintenant, regardez le code ci-dessous avec la variable.

Code:

 Sub TWB_Example2 () Dim Wb As Workbook Set Wb = ThisWorkbook Wb.Activate Wb.Worksheets ("Sheet1"). Activer Wb.Save Wb.Close Wb.SaveAs End Sub 

Ça a l'air magnifique, n'est-ce pas ??

Laissez-moi vous expliquer le code.

J'ai d'abord déclaré la variable comme objet Workbook.

Dim Wb comme classeur

Comme il s'agit d'une variable objet, nous devons définir la référence au classeur particulier. J'ai donc utilisé la référence «ThisWorkbook».

Définir Wb = ThisWorkbook

Désormais, la variable «Wb» est référencée dans le classeur dans lequel nous écrivons actuellement le code. À partir de là, dans la procédure, nous n'avons pas besoin d'utiliser le mot «ThisWorkbook» à la place, nous pouvons utiliser la variable «Wb»

Classeur actif vs ce classeur dans Excel VBA

Comme je l'ai dit au début de l'article, de nombreux codeurs utilisent très souvent les mots Active Workbook & ThisWorkbook dans leur codage VBA. En tant que lecteur ou nouvel apprenant, il n'est pas facile de comprendre ces deux éléments. Alors, laissez-moi vous expliquer certaines des différences.

Différence n ° 1: signification

  • Classeur actif: le classeur actif n'est pas nécessairement le classeur dans lequel nous écrivons le code pour le moment. Si vous avez plusieurs classeurs ouverts et que celui qui est visible sur votre écran est considéré comme un classeur actif .
  • ThisWorkbook: ThisWorkbook est toujours le classeur dans lequel nous écrivons le code pour le moment.

Différence 2: chances d'erreur

  • Classeur actif: l' utilisation d'Active dans le codage peut entraîner de nombreuses erreurs et confusion, car nous ne savons jamais quel classeur est actif, sauf si nous mentionnons spécifiquement le classeur à activer avant d'utiliser le mot Classeur actif.
  • ThisWorkbook: ThisWorkbook ne peut pas se tromper car peu importe le classeur actif, il prend toujours la référence du classeur où nous écrivons le code.