Vous pouvez recevoir le message d’erreur « erreur d’exécution »-2147023174 ' (800706ba)» ou « erreur d’exécution » 462 lorsque vous exécutez du code Visual Basic qui utilise Automation pour contrôler Word

Symptômes

Lorsque vous exécutez du code Microsoft Visual Basic qui utilise Automation pour contrôler Microsoft Word, l’un des messages d’erreur suivants peut apparaître :message d’erreur 1

Erreur au moment de l’exécution « -2147023174 » (800706ba)

Message d’erreur 2

Erreur au moment de l’exécution' 462 ' : le serveur distant n’existe pas ou n’est pas disponible

Cause

Visual Basic a établi une référence à Word en raison d’une ligne de code qui appelle un objet, une méthode ou une propriété Word sans le qualifier par une variable d’objet Word. Visual Basic ne libère pas cette référence tant que vous n’avez pas terminé le programme. Cette référence errant interfère avec le code d’Automation lorsque le code est exécuté plusieurs fois.

Résolution

Modifiez le code de manière à ce que chaque appel à un objet, une méthode ou une propriété soit qualifié avec la variable d’objet appropriée.

Statut

Ce comportement est inhérent au produit.

Informations supplémentaires

Pour automatiser Word, vous établissez une variable objet qui fait généralement référence à l’objet application ou document Word. D’autres variables objets peuvent ensuite être définies pour faire référence à une sélection, une plage ou à d’autres objets dans le modèle objet Word. Lorsque vous écrivez du code pour utiliser un objet, une méthode ou une propriété Word, vous devez toujours faire précéder l’appel avec la variable objet appropriée. Si ce n’est pas le cas, Visual Basic utilise une référence variable globale cachée qu’il définit sur l’instance en cours d’exécution. Si Word est arrêté ou si la variable d’objet déclarée est refermée, la variable globale masquée fera désormais référence à un objet non valide (détruit). Lors de l’exécution du code d’Automation, les appels à cette variable d’objet masqué échoueront avec l’erreur ci-dessus. Les étapes suivantes vous montrent comment reproduire ce problème et comment le corriger.

Étapes de reproduction du comportement

  1. Démarrez un nouveau projet EXE standard dans Visual Basic. Form1 est créé par défaut.

  2. Cliquez sur références dans le menu projet , puis cliquez sur l’une des options suivantes :

    • Pour Office Word 2007, cliquez sur bibliothèque d’objets Microsoft Word 12,0

    • Pour Word 2003, cliquez sur bibliothèque d’objets Microsoft Word 11,0

    • Pour Word 2003, cliquez sur bibliothèque d’objets Microsoft Word 10,0

    • Pour Word 2000, cliquez sur bibliothèque d’objets Microsoft Word 9,0.

    • Pour Word 97, cliquez sur bibliothèque d’objets Microsoft Word 8,0.

  3. Placez un contrôle CommandButton sur Form1.

  4. Copiez le code suivant dans la fenêtre de code de Form1 :

          Option Explicit      Private Sub Command1_Click()         Dim oWord As Word.Application         Dim oDoc As Word.Document         Dim oRange as Word.Range         Set oWord = CreateObject("Word.Application")         With oWord             .Visible = True             .Activate             .WindowState = wdWindowStateNormal         End With         Set oDoc = oWord.Documents.Add         MsgBox "Document open", vbMsgBoxSetForeground         With oDoc             .PageSetup.LeftMargin = InchesToPoints(1.25)         End With         ' This example inserts text at the end of section one.         Set oRange = ActiveDocument.Sections(1).Range         With oRange             .MoveEnd Unit:=wdCharacter, Count:= -1             .Collapse Direction:=wdCollapseEnd             .InsertParagraphAfter             .InsertAfter "End of section."         End With         With oDoc             .Saved = True         End With         Set oRange = Nothing         Set oDoc = Nothing         oWord.Quit         Set oWord = Nothing      End Sub
  5. Dans le menu exécuter , cliquez sur Démarrer ou appuyez sur la touche F5 pour démarrer le programme.

  6. Cliquez sur le contrôle CommandButton. Aucune erreur ne se produit. Toutefois, une référence à Word a été créée et n’a pas été publiée.

  7. Cliquez de nouveau sur le contrôle CommandButton et notez que vous recevez l’erreur décrite précédemment.Remarque L’erreur se produit parce que le code fait référence à la méthode InchesToPoints sans faire précéder l’appel avec la variable d’objet oWord.

  8. Arrêtez le projet, puis modifiez la ligne suivante :

    .PageSetup.LeftMargin = InchesToPoints(1.25)

    vu

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
  9. Exécutez à nouveau le programme. Cliquez ensuite sur le contrôle CommandButton. Aucune erreur ne se produit.

  10. Cliquez de nouveau sur le contrôle CommandButton et notez que vous recevez le message d’erreur.Remarque Cette erreur se produit parce que le code fait référence à l’objet Range de la section ActiveDocument sans faire précéder l’appel avec la variable d’objet oWord.

  11. Arrêtez le projet, puis modifiez la ligne suivante :

    Set oRange = ActiveDocument.Sections(1).Range

    vu

    Set oRange = oWord.ActiveDocument.Sections(1).Range
  12. Exécutez à nouveau le programme. Notez que vous pouvez exécuter le code plusieurs fois sans erreur.

Lors de la création d’un projet Visual Basic qui automatise Word, si votre projet comporte une référence à la bibliothèque d’objets Microsoft Word, un exemple de code pour les objets, méthodes et propriétés du modèle objet Word est disponible dans le fichier d’aide de Word. Lorsque le curseur se trouve au-dessus d’un mot clé dans votre code, vous verrez le texte d’aide en vigueur en appuyant sur la touche F1. L’exemple de code de la rubrique d’aide sera le code Visual Basic pour applications de Microsoft Word. Les références d’objet requises par votre code Visual Basic ne seront pas affichées. Vous devrez ajouter les qualificateurs le cas échéant.

Références

Pour plus d’informations, consultez les articles suivants dans la base de connaissances Microsoft :

178510 PROBLÈME : la méthode Automation Excel de l’objet « _Global » a échoué

167223 Fichier d’aide de Microsoft Office 97 Automation disponiblePour plus d’informations sur l’automatisation des applications Office, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :

222101 PROCÉDURE : Rechercher et utiliser la documentation du modèle d’objet Office

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la traduction ?

Qu’est-ce qui a affecté votre expérience ?

Avez-vous d’autres commentaires ? (Facultatif)

Nous vous remercions pour vos commentaires.

×