Activation de l’application Word dans Excel, VBA

Le principe de base de l’activation de Word est que vous devez indiquer à Excel que vous le quittez complètement pour une autre application totalement différente. La fonction GetObject est un moyen fiable de le faire, comme illustré dans la macro suivante:

Sub ActivationDeWord()

Dim wordApp As Object

Set wordApp = GetObject(, "Word.Application")

wordApp.Activate

End Sub

 

Commentaires

■ La fonction GetObject envoie une référence à un objet fourni par un composant ActiveX. Cette fonction est utilisée pour accéder à un objet ActiveX à partir d’un fichier et attribuer l’objet à une variable d’objet. Sa syntaxe est :

GetObject([ pathname ], [ class ]) où

– pathnamen : c’est un argument facultatif qui indique le chemin complet et le nom du fichier contenant l’objet à récupérer. Si le chemin d’accès est omis, l’argument class est requise. Ainsi, étant  donné que le chemin d’accès n’est pas spécifié, GetObject active Word, car Word.Application est l’objet spécifié dans le deuxième argument.

– class : c’est aussi un argument facultatif qui représente la classe de l’objet.

■ Si chemin d’accès est une chaîne de longueur nulle(“”),  GetObject renvoie une nouvelle instance d’objet du type spécifié. Si l’ argument chemin d’accès est omis, GetObject renvoie un objet actuellement actif du type spécifié. Si aucun objet du type spécifié n’existe, une erreur se produit.

■ L’instruction Set est utilisée pour affecter l’objet renvoyé par GetObject à la variable objet.

REMARQUE                                                                                                 

On utilise la fonction GetObject lorsqu’il existe une instance actuelle de l’objet ou si vous souhaitez créer l’objet avec un fichier déjà chargé. S’il n’y a pas d’instance actuelle et que vous ne voulez pas que l’objet démarre avec un fichier chargé, utilisez la fonction CreateObject.

Mais que se passe-t-il si Word n’est pas ouvert? Si vous essayez d’exécuter la macro ActivationDeWord sans que Word soit ouvert, une erreur d’exécution se produit car VBA est invité à activer un objet qui ne peut pas être activé. Vous devez insérer un contournement d’erreur dans votre macro pour indiquer à VBA d’activer Word uniquement si Word est ouvert et d’ouvrir puis d’activer Word uniquement si Word est fermé.

Vous pouvez accomplir cela avec l’instruction On Error Resume Next qui surveille le numéro d’erreur d’exécution 429, qui est le numéro d’erreur VBA qui se produit avec la fonction GetObject si Word n’est pas ouvert. Dans ce cas, VBA ouvre une nouvelle instance de Word, comme illustré dans la macro ActivateWord modifiée suivante:

Sub ActivationDeWord()

Dim wordApp As Object

On Error Resume Next

Set wordApp = GetObject(, "Word.Application")

If Err.Number = 429 Then

Err.Clear

Set wordApp = CreateObject("Word.Application")

wordApp.Visible = True

End If

wordApp.Activate

End Sub

 

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x