Vous recevez une erreur d’exécution 429 lors de l’automatisation des applications Office

S’applique à : Office 2016Office 2013

Résumé


Lorsque vous utilisez l’opérateur New ou la fonction CreateObject de Microsoft Visual Basic pour créer une instance d’une application Microsoft Office, le message d’erreur suivant s’affiche :
Erreur d’exécution '429' : les composant ActiveX ne peut pas créer l’objet
Cette erreur se produit lorsque le modèle d’objet composant (COM) ne peut pas créer l’objet Automation demandé et que l’objet Automation n’est, par conséquent, pas disponible dans Visual Basic. Cette erreur ne se produit pas sur tous les ordinateurs.Cet article décrit comment diagnostiquer et résoudre les problèmes courants qui peuvent provoquer cette erreur.

Informations supplémentaires


Dans Visual Basic, il existe plusieurs causes possibles de l’erreur 429 s’affiche. L’erreur se produit si une des conditions suivantes est vraie : 
  • Il existe une erreur dans l’application.
  • Il existe une erreur dans la configuration du système.
  • Il existe un composant manquant.
  • Il existe un composant endommagé.
Pour trouver la cause de l’erreur, isolez le problème. Si vous recevez le message d’erreur « 429 » sur un ordinateur client, utilisez les informations suivantes pour isoler et résoudre l’erreur dans les applications Microsoft Office.Remarque Certaines des informations suivantes peuvent également s’appliquer pour les serveurs COM non Office. Toutefois, cet article suppose que vous souhaitez automatiser des applications Office.

Examinez le code

Avant de résoudre l’erreur, essayez d’isoler une seule ligne de code qui peut être à l’origine du problème.Si vous découvrez qu’une seule ligne de code à l’origine de ce problème, procédez comme suit : 
  • Assurez-vous que le code utilise la création d’objet explicite. Les problèmes sont plus faciles à identifier s’ils sont limités vers le bas à une seule action. Par exemple, recherchez la création d’objet implicite qui est utilisée comme l’un des éléments suivants. Exemple de code 1
    Application.Documents.Add 'DON'T USE THIS!!
    Exemple de code 2
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!'... some other codeoWordApp.Documents.Add
    Deux de ces exemples de code utilisent la création d’objet implicite. Microsoft Office Word 2003 ne démarre pas tant que la variable est appelée au moins une fois. Étant donné que la variable peut être appelée dans différentes parties du programme, le problème peut être difficile à localiser. Il peut être difficile de vérifier que le problème est causé lors de la création de l’objet Application ou lors de la création de l’objet Document . Au lieu de cela, vous pouvez effectuer des appels explicites pour créer chaque objet séparément, comme suit.
    Dim oWordApp As Word.ApplicationDim oDoc As Word.DocumentSet oWordApp = CreateObject("Word.Application")'... some other codeSet oDoc = oWordApp.Documents.Add
    Lorsque vous faites des appels explicites pour créer chaque objet séparément, le problème est plus facile à isoler. Cela peut également rendre le code plus facile à lire.
  • Utilisez la fonction CreateObject au lieu de l’opérateur New lorsque vous créez une instance d’une application Office. La fonction CreateObject correspond étroitement le processus de création que la plupart des clients de Microsoft Visual C++ utilisent. La fonction CreateObjectfonction permet également des modifications dans le CLSID du serveur entre les versions. Vous pouvez utiliser la fonction CreateObjectfonction avec les objets à liaison anticipée et liaison tardive aux objets.
  • Vérifiez que la chaîne « ProgID » qui est passée au CreateObject est correct et vérifiez que la chaîne « ProgID » est indépendante de la version. Par exemple, utilisez la chaîne « Excel.Application » au lieu d’utiliser la chaîne « Excel.Application.8 ». Le système qui échoue peut avoir une ancienne version de Microsoft Office ou une version plus récente de Microsoft Office que la version que vous avez spécifié dans la chaîne « ProgID ».
  • Utilisez la commande Erl pour signaler le numéro de la ligne de code qui ne fonctionne pas. Cela peut vous aider à déboguer des applications qui ne peuvent pas être exécutées dans l’IDE. Le code suivant vous indique quel objet Automation ne peut pas être créé (Microsoft Word ou Microsoft Office Excel 2003) :
    Dim oWord As Word.Application Dim oExcel As Excel.Application  On Error Goto err_handler  1: Set oWord = CreateObject("Word.Application") 2: Set oExcel = CreateObject("Excel.Application")  ' ... some other code  err_handler:   MsgBox "The code failed at line " & Erl, vbCritical
    Utilisez la fonction MsgBox et le numéro de ligne pour suivre l’erreur.
  • Utilisez la liaison tardive comme suit :
    Dim oWordApp As Object
    Objets à liaison précoce nécessitent de leurs interfaces personnalisées soient convertis dans les limites de processus. Si l’interface personnalisée ne peuvent pas être marshalé lors de CreateObject ou Nouveau, vous recevez le message d’erreur « 429 ». Un objet à liaison tardive utilise l’interface IDispatch définie par le système qui ne nécessite pas de serveur proxy personnalisé doivent être marshalées. Pour vérifier que cette procédure fonctionne correctement, utilisez un objet à liaison tardive. Si le problème se produit uniquement lorsque l’objet est à liaison anticipée, le problème est dans l’application serveur. En règle générale, vous pouvez réinstaller l’application tel que décrit dans la section « Vérification du serveur Automation » de cet article pour résoudre le problème.

Vérification du serveur automation

La raison la plus courante, une erreur se produit lorsque vous utilisez CreateObject ou Nouveau est un problème qui affecte l’application serveur. En règle générale, la configuration de l’application ou de l’installation de l’application provoque le problème. Pour résoudre les problèmes, utilisez à la suite de méthodes :

  • Vérifiez que l’application Office que vous souhaitez automatiser est installée sur l’ordinateur local. Assurez-vous que vous pouvez exécuter l’application. Pour ce faire, cliquez sur Démarrer, cliquez sur Exécuteret essayez d’exécuter l’application. Si vous ne pouvez pas exécuter l’application manuellement, l’application ne fonctionnera pas grâce à l’automatisation.
  • Réenregistrez l’application comme suit :  
    1. Cliquez sur Démarrer, puis cliquez sur exécuter.
    2. Dans la boîte de dialogue exécuter , tapez le chemin d’accès du serveur et puis ajoutez /RegServer à la fin de la ligne.
    3. Cliquez sur OK. L’application s’exécute en mode silencieux. L’application est réenregistrée en tant que serveur COM.
    Si le problème se produit car une clé de Registre est manquante, ces étapes résolvent en général le problème.
  • Vérifiez la clé LocalServer32 sous l’identificateur CLSID de l’application que vous souhaitez automatiser. Assurez-vous que la clé LocalServer32 pointe vers l’emplacement correct de l’application. Assurez-vous que le nom de chemin d’accès est dans un format court (DOS 8.3). Vous n’avez pas à inscrire un serveur à l’aide d’un nom de chemin d’accès court. Toutefois, les noms de chemin longs contenant des espaces peuvent provoquer des problèmes sur certains systèmes. Pour examiner la clé de chemin stockée pour le serveur, démarrez l’Éditeur du Registre Windows, comme suit :  
    1. Cliquez sur Démarrer, puis cliquez sur exécuter.
    2. Tapez regedit, puis cliquez sur OK.
    3. Déplacer la clé HKEY_CLASSES_ROOT\CLSID. Les CLSID des serveurs automation enregistrés sur le système se trouvent sous cette clé.
    4. Utilisez les valeurs suivantes de la clé CLSID pour rechercher la clé qui représente l’application Office que vous souhaitez automatiser. Vérifiez la clé LocalServer32 de la clé CLSID pour le chemin d’accès.  
      Serveur d’Office Clé de CLSID
      Access.Application {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
      Excel.Application {00024500-0000-0000-C000-000000000046}
      Outlook.Application {0006F03A-0000-0000-C000-000000000046}
      PowerPoint.Application {91493441-5A91-11CF-8700-00AA0060263B}
      Word.Application {000209FF-0000-0000-C000-000000000046}
    5. Vérifiez le chemin d’accès pour vous assurer qu’elle correspond à l’emplacement réel du fichier.
    Remarque Noms de chemin courts peuvent sembler corrects lorsqu’ils ne sont pas correctes. Par exemple, Office et Microsoft Internet Explorer (s’ils sont installés dans leurs emplacements par défaut) ont un chemin d’accès court similaire à C:\PROGRA~1\MICROS~X\ (où X est un nombre). Ce nom ne peut pas apparaître initialement à un nom de chemin d’accès court. Pour déterminer si le chemin d’accès est correct, procédez comme suit :  
    1. Cliquez sur Démarrer, puis cliquez sur exécuter.
    2. Copiez la valeur à partir du Registre, puis coller la valeur dans la boîte de dialogue exécuter . Remarque Supprimez le commutateur /automation avant d’exécuter l’application.
    3. Cliquez sur OK.
    4. Vérifiez que l’application s’exécute correctement. Si l’application s’exécute après avoir cliqué sur OK, le serveur est enregistré correctement. Si l’application ne s’exécute pas après avoir cliqué sur OK, remplacez la valeur de la clé LocalServer32 par le chemin d’accès correct. Utilisez un nom de chemin d’accès court si vous le pouvez.
  • Test d’une corruption possible du modèle Normal.dot ou du fichier de ressources Excel.xlb. Des problèmes peuvent se produire lorsque vous automatisez Microsoft Word ou Microsoft Excel si le modèle Normal.dot dans Word ou le fichier de ressources Excel.xlb dans Excel est endommagé. Pour tester ces fichiers, recherchez les disques durs locaux toutes les instances de Normal.dot ou d’Excel.xlb. Remarque Vous pouvez trouver plusieurs copies de ces fichiers. Il existe un exemplaire de chacun de ces fichiers pour chaque profil d’utilisateur qui est installé sur le système. Renommez temporairement les fichiers Normal.dot ou Excel.xlb, puis réexécutez votre test automation. Word et Excel créent ces fichiers s’ils ne peuvent pas les trouver. Vérifiez que le code fonctionne. Si le code fonctionne lorsqu’un nouveau fichier Normal.dot est créé, supprimez les fichiers que vous avez renommé. Ces fichiers sont endommagés. Si le code ne fonctionne pas, vous devez restaurer ces fichiers à leurs noms d’origine pour enregistrer tous les paramètres personnalisés qui sont enregistrés dans ces fichiers.
  • Exécutez l’application sous le compte administrateur. Les serveurs Office nécessitent l’accès en lecture/écriture au Registre et au lecteur de disque. Les serveurs Office ne se charge pas correctement si vos paramètres de sécurité actuels refusent l’accès en lecture/écriture.

Examiner le système

Configuration du système peut également provoquer des problèmes pour la création de des serveurs COM out-of-process. Pour le résoudre, appliquez les méthodes suivantes sur le système sur lequel l’erreur se produit :

  • Déterminez si le problème se produit avec n’importe quel serveur out-of-process. Si vous avez une application qui utilise un serveur COM particulier (par exemple, Word), testez un serveur out-of-process différent afin de vous assurer que le problème ne se produise dans la couche COM elle-même. Si vous ne pouvez pas créer un serveur COM d’out-of-process sur l’ordinateur, réinstallez les fichiers système OLE tel que décrit dans la section « Réinstallation de Microsoft Office » de cet article ou réinstallez le système d’exploitation pour résoudre le problème.
  • Examiner les numéros de version des fichiers système OLE qui gèrent automation. Ces fichiers sont généralement installés ensemble. Ils doivent correspondre aux numéros de build. Un utilitaire d’installation mal configuré peut installer par erreur les fichiers séparément. Ainsi, les fichiers qui ne correspondent pas. Pour éviter les problèmes d’automation, examinez les fichiers pour vous assurer que les versions des fichiers sont mis en correspondance. Les fichiers automation se trouvent dans le répertoire Windows\System32. Vérifiez les fichiers suivants.  
    Nom du fichier Version Date de modification
    Asycfilt.dll 10.0.16299.15 29 septembre 2017
    Ole32.dll 10.0.16299.371 29 mars 2018
    Oleaut32.dll 10.0.16299.431 3 mai 2018
    Olepro32.dll 10.0.16299.15 29 septembre 2017
    Stdole2.tlb 3.0.5014 29 septembre 2017
    Pour examiner la version du fichier, cliquez droit sur le fichier dans l’Explorateur Windows, puis cliquez sur Propriétés. Notez les quatre derniers chiffres de la version de fichier (le numéro de build) et la date à laquelle le fichier a été modifié. Vérifiez que ces valeurs sont les mêmes pour tous les fichiers automation. Remarque Les fichiers suivants sont pour Windows 1709 de Version 10, génération 16299.431. Ces nombres et les dates sont des exemples. Vos valeurs peuvent être différentes.  
  • Utilisez l’utilitaire de Configuration système (Msconfig.exe) pour examiner le démarrage du système et des services pour des applications tierces qui peuvent limiter l’exécution du code dans l’application Office. Pour plus d’informations sur Msconfig.exe, consultez l’article suivant de la Base de connaissances Microsoft :
    181966 Utilitaire de Configuration système paramètres avancés du dépannage
    Par exemple, les applications Automation d’Outlook peuvent échouer car vous exécutez un programme antivirus qui dispose des fonctionnalités de « blocage du script ». Remarque Désactivez l’antivirus uniquement provisoirement sur un système de test qui n’est pas connecté au réseau. Sinon, procédez comme suit dans Outlook pour désactiver des compléments tiers : Si cette méthode résout le problème, contactez le fournisseur d’antivirus tiers pour plus d’informations sur une mise à jour de l’antivirus.  
    1. Dans le menu fichier , cliquez sur Options, puis cliquez sur Add-ins.
    2. Cliquez sur compléments COM de gérer, puis cliquez sur OK. Remarque La boîte de dialogue compléments COM s’ouvre.
    3. Désactivez la case à cocher de tout complément tiers, puis cliquez sur OK.
    4. Redémarrez Outlook.

Réinstallation de Microsoft Office

Si aucune des procédures précédentes ne résout le problème, supprimez, puis réinstallez Office.

Pour plus d’informations, consultez l' articlesuivant de Office :

Références


Pour plus d’informations sur automation d’Office et des exemples de code, consultez le site Web Microsoft suivant :