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