Se connecter avec Microsoft
S'identifier ou créer un compte.
Bonjour,
Sélectionnez un autre compte.
Vous avez plusieurs comptes
Choisissez le compte avec lequel vous voulez vous connecter.

Symptômes

Lorsque vous exécutez du code Microsoft Visual Basic qui utilise Automation pour contrôler Microsoft Word, vous pouvez recevoir l’un des messages d’erreur suivants :

Message d’erreur 1

Erreur d’exécution « -2147023174 » (800706ba)
Erreur d’automatisation

Message d’erreur 2

Erreur d’exécution « 462 » : l’ordinateur 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 la qualifier avec une variable objet Word. Visual Basic ne publie pas cette référence tant que vous n’avez pas terminé le programme. Cette référence errante interfère avec le code d’automatisation lorsque le code est exécuté plusieurs fois.

Résolution

Modifiez le code afin que chaque appel à un objet, une méthode ou une propriété Word soit qualifié avec la variable objet appropriée.

État

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’Word’objet Application ou Document. D’autres variables d’objet 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 de la variable objet appropriée. Si ce n’est pas le cas, Visual Basic utilise une référence de variable globale masquée qu’il définit sur la instance en cours d’exécution. Si Word est arrêté ou si la variable objet déclarée est libérée, la variable globale masquée référence désormais un objet non valide (détruit). Lors de l’exécution à nouveau du code d’automatisation, les appels à cette variable objet masqué échouent avec l’erreur mentionnée ci-dessus.


Les étapes suivantes montrent comment reproduire ce problème et comment le corriger.
 

Étapes pour reproduire le comportement

  1. Démarrez un nouveau projet EXE Standard en 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 CommandButton sur Form1.

  4. Copiez le code suivant dans la fenêtre 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 bouton 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 à nouveau sur le Bouton de commande et notez que vous recevez l’erreur décrite précédemment.

    Remarque L’erreur se produit car le code fait référence à la méthode InchesToPoints sans avoir précédé l’appel avec la variable objet oWord.

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

    .PageSetup.LeftMargin = InchesToPoints(1.25)
    

    -À-

     

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
    
  9. Réexécutez le programme. Cliquez ensuite sur le bouton CommandButton. Aucune erreur ne se produit.

  10. Cliquez à nouveau sur commandButton et notez que vous recevez l’erreur.

    Remarque L’erreur se produit car le code fait référence à l’objet Range de la section ActiveDocument 1 sans avoir précédé l’appel avec la variable objet oWord.

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

    Set oRange = ActiveDocument.Sections(1).Range
    

    -À-
     

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

Lors de la génération d’un projet Visual Basic automatisant Word, si votre projet a une référence à la bibliothèque d’objets Microsoft Word, l’exemple de code pour les objets, méthodes et propriétés du modèle objet Word est disponible à partir du fichier d’aide Word. Lorsque le curseur se trouve sur un mot clé dans votre code, vous voyez tout texte d’aide applicable en appuyant sur la touche F1.


L’exemple de code dans la rubrique d’aide sera le code Microsoft Word Visual Basic pour Applications. Il n’affiche pas les références d’objet requises par votre code Visual Basic. Vous devez 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 PRB : Échec de la méthode Excel Automation de l’objet '_Global'

Pour plus d’informations sur l’automatisation des applications Office, cliquez sur le numéro d’article ci-dessous pour afficher l’article dans la Base de connaissances Microsoft :

vue d’ensemble du modèle objet Word

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?
En cliquant sur Envoyer, vos commentaires seront utilisés pour améliorer les produits et services de Microsoft. Votre administrateur informatique sera en mesure de collecter ces données. Déclaration de confidentialité.

Nous vous remercions de vos commentaires.

×