INFO : Résolution de l'erreur 429 lors de l'automatisation des applications Office

Traductions disponibles Traductions disponibles
Numéro d'article: 244264 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F244264
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Agrandir tout | Réduire tout

Sommaire

Résumé

Lorsque vous utilisez l'opérateur New ou la fonction CreateObject dans Microsoft Visual Basic pour créer une instance d'une application Microsoft Office, le message d'erreur suivant peut s'afficher :
Erreur d'exécution "429" : Le composant ActiveX ne peut pas créer l'objet
Cette erreur se produit quand l'objet Automation demandé n'a pas pu être créé par COM, et qu'il n'est par conséquent pas disponible dans Visual Basic. Cette erreur se manifeste sur certains ordinateurs mais pas sur d'autres.

Cet article propose certains conseils qui vous aideront à diagnostiquer et résoudre des problèmes courants susceptibles d'être à l'origine de l'erreur.

Plus d'informations

Contrairement à certaines erreurs dans Visual Basic, l'erreur 429 peut avoir plusieurs origines. Le problème survient à cause d'une erreur de configuration de l'application ou du système, ou d'un composant manquant ou endommagé. La découverte de la cause réelle se fait par élimination. Si vous rencontrez cette erreur sur un ordinateur client, vous devrez vérifier plusieurs éléments afin de l'isoler et de la résoudre.

Les éléments de cet article vous suggèrent des idées pratiques pour la résolution de cette erreur lorsque vous utilisez les applications Office. Certaines de ces informations peuvent également s'appliquer aux serveurs COM autre qu'Office, mais cet article part de l'hypothèse que vous tentez d'automatiser Microsoft Office.

Vérification du code

Le premier élément à examiner lors de la recherche du problème est le code. En effet, avant de rectifier une erreur, vous devez savoir où elle survient. Essayez de la réduire à une simple ligne de code.

Lorsque vous avez trouvé le code défaillant, essayez de procéder comme suit :
  • Assurez-vous que le code utilise la création d'objet explicite. Un problème est toujours plus facile à repérer et à identifier s'il est limité à une seule action. Par exemple, ne faites pas ceci :
    Application.Documents.Add 'DON'T USE THIS!!
    						
    ou :
    
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    						
    Ces deux méthodes font appel à la création d'objet implicite. Microsoft Word ne démarre pas tant que la variable n'est pas appelée au moins une fois. Puisque la variable peut être appelée dans différentes parties du programme, cela rend le problème plus difficile à cerner. En outre, le problème peut être lié à la création de l'objet Application ou de l'objet Document.

    Effectuez plutôt des appels explicites pour créer chaque objet séparément :
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    						
    Cela permet d'isoler plus facilement le problème et de rendre le code plus lisible.
  • Lorsque vous créez une instance d'une application Microsoft Office, faites appel à la fonction CreateObject au lieu de l'opérateur New. CreateObject est mieux adaptée au processus de création utilisé par la plupart des clients Visual C++ et permet des modifications dans le CLSID du serveur entre les versions. CreateObject peut être utilisé à la fois avec des objets à liaison précoce et des objets à liaison tardive.
  • Vérifiez que la chaîne ProgID transmise à CreateObject est correcte et qu'elle ne mentionne pas la version (par exemple, utilisez "Excel.Application" plutôt que "Excel.Application.8"). En effet, il se peut que le système défaillant possède une version plus ancienne ou plus récente de Microsoft Office que celle précisée dans ProgID.
  • Pour faciliter le débogage des applications qui ne peuvent pas être exécutées dans l'IDE, utilisez la commande Erl pour consigner le numéro de la ligne où survient l'échec. Par exemple, le code suivant indique quel objet Automation ne peut pas être créé (Word ou Excel) :
    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 une combinaison de boîtes de message et de numéros de ligne pour localiser l'erreur.
  • Essayez d'utiliser une liaison tardive (c'est-à-dire, Dim oWordApp As Object). Les objets à liaison précoce nécessitent que les paramètres de leurs interfaces personnalisées soient convertis dans les limites du processus. Si cela pose un problème pendant l'exécution de CreateObject ou de New, l'erreur 429 s'affiche. Un objet à liaison tardive utilise une interface définie par le système (IDispatch) ne nécessitant pas de serveur proxy personnalisé pour une conversion de paramètres. Essayez d'utiliser un objet à liaison tardive pour voir une éventuelle différence.

    Si le problème se produit uniquement avec les objets à liaison précoce, il concerne l'application de serveur et peut être rectifié par la réinstallation de l'application (voir ci-après).
  • Si vous effectuez l'automatisation à partir d'ASP ou d'un composant MTS, utilisez CreateObject au lieu de Server.CreateObject (). En effet, Server.CreateObject crée une instance de l'application Office sous l'identité d'un programme MTS, qui peut entraîner des problèmes avec Microsoft Office.

Vérification du serveur Automation

Les raisons les plus courantes d'erreur liées à CreateObject ou New sont des problèmes avec l'application de serveur elle-même. En général, ces problèmes concernent la configuration ou l'installation de l'application. Voici quelques éléments à vérifier :
  • Vérifiez que l'application Microsoft Office à automatiser est installée sur l'ordinateur local et que vous pouvez la démarrer à partir de la boîte de dialogue Exécuter du menu Démarrer. En effet, si vous ne pouvez par démarrer le programme manuellement, il ne fonctionnera pas dans le cadre de l'automatisation.
  • Enregistrez à nouveau l'application en tapant le chemin d'accès au serveur dans la boîte de dialogue Exécuter du menu Démarrage, puis ajoutez /RegServer en fin de ligne. Cliquez sur OK. Cela a pour effet d'exécuter l'application en mode silencieux et de l'inscrire dans le Registre en tant que serveur COM. Si le problème est lié à une clé de Registre manquante, ceci permet généralement de le corriger.
  • Vérifiez la clé LocalServer32 sous l'identificateur CLSID de l'application à automatiser. Assurez-vous qu'elle pointe vers le bon emplacement de l'application et que le chemin d'accès est indiqué dans un format court (DOS 8.3). Même s'il n'est pas obligatoire qu'un serveur soit enregistré sous un chemin d'accès court, les chemins d'accès contenant des espaces peuvent entraîner des problèmes dans certains systèmes (voir ci-après).

    Pour vérifier la clé de chemin d'accès stockée pour le serveur, démarrez l'Éditeur du Registre Windows en tapant regedit dans la boîte de dialogue Exécuter du menu Démarrer. Cherchez la clé HKEY_CLASSES_ROOT\\Clsid. Sous cette clé, vous trouverez les identificateurs CLSID des serveurs Automation enregistrés dans le système. À l'aide des valeurs ci-dessous, cherchez la clé qui représente l'application Office à automatiser et vérifiez la clé LocalServer32 de son chemin d'accès.
       +========================+=========================================+
       | Serveur Office         | Clé CLSID                               |
       +========================+=========================================+
       | Access.Application     | {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}  |
       +------------------------+-----------------------------------------+
       | Excel.Application      | {00024500-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
       | FrontPage.Application  | {04DF1015-7007-11D1-83BC-006097ABE675}  |
       +------------------------+-----------------------------------------+
       | Outlook.Application    | {0006F03A-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
       | PowerPoint.Application | {91493441-5A91-11CF-8700-00AA0060263B}  |
       +------------------------+-----------------------------------------+
       | Word.Application       | {000209FF-0000-0000-C000-000000000046}  |
       +------------------------+-----------------------------------------+
    						
    Le chemin d'accès correspond-il à l'emplacement réel du fichier ? Sachez qu'un chemin d'accès court peut vous donner l'impression qu'il est correct alors qu'il ne l'est pas. Par exemple, Microsoft Office et Microsoft Internet Explorer (s'ils sont installés dans leurs emplacements par défaut) possèdent un chemin d'accès court du type "C:\\PROGRA~1\\MICROS~X\\", où X est un chiffre. Il n'est pas évident de prime abord qu'il s'agit d'un chemin d'accès court.

    Vous pouvez tester la validité du chemin d'accès en copiant la valeur du Registre et en la collant dans la boîte de dialogue Exécuter du menu Démarrer (supprimez le commutateur /Automation avant d'exécuter l'application). L'application démarre-t-elle lorsque vous sélectionnez OK ? Si tel est le cas, le serveur est enregistré correctement. Dans le cas contraire, remplacez la valeur de la clé LocalServer32 par le bon chemin d'accès (court si possible).
  • Des problèmes peuvent survenir lors de l'automatisation de Word ou d'Excel si le modèle Normal.dot (Word) ou le fichier de ressources Excel.xlb (Excel) est endommagé. Pour vérifier si une altération s'est produite, recherchez dans les disques durs locaux toutes les instances de Normal.dot ou * .xlb. (Notez que si vous exécutez Windows 2000, Windows NT ou Windows 95/98 avec les profils activés, vous pouvez trouver plusieurs copies de ces fichiers, une pour chaque profil utilisateur du système.) Renommez provisoirement le ou les fichiers Normal.dot ou le ou les fichiers *.xlb vérifiez à nouveau l'automation (Word et Excel créeront ces fichiers s'ils ne les trouvent pas). Le code fonctionne-t-il maintenant ? Si tel est le cas, vous devez supprimer les fichiers que vous avez renommés car ils sont endommagés. Dans le cas contraire, redonnez-leur leur nom d'origine, afin que les paramètres personnalisés enregistrés dans ces fichiers ne soient pas perdus.
  • Dans un système Windows NT, Windows 2000, Windows XP ou Windows Server  003, exécutez l'application sous le compte d'administrateur. Les serveurs Office requièrent un accès en lecture/écriture au Registre et au disque dur ; ils peuvent ne pas se charger correctement si vos paramètres de sécurité actuels refusent ce privilège.

Vérification du système

La configuration du système peut également entraîner des problèmes lors de la création de serveurs COM out-of-process. Vérifiez les éléments suivants dans les systèmes où survient l'erreur :
  • Le problème survient-il avec tous les serveurs out-of-process ? Si vous possédez une application qui utilise uniquement un serveur COM particulier (par exemple, Word), vous pouvez effectuer des tests sur un serveur out-of-process différent, afin de vous assurer que le problème n'est pas lié à la couche COM elle-même. Si vous ne pouvez créer aucun serveur COM out-of-process sur ce système, vous devrez réinstaller les fichiers systèmes OLE (voir ci-après) ou réinstaller le système d'exploitation pour résoudre le problème.
  • Vérifiez les numéros de version des fichiers systèmes OLE qui gèrent Automation. Ces fichiers sont généralement installés ensemble ; ils doivent correspondre aux numéros de version. Un utilitaire d'installation mal configuré peut installer par erreur les fichiers séparément, et installer des numéros de versions qui ne correspondent pas. Pour éviter des problèmes avec Automation, vérifiez les fichiers pour vous assurer qu'ils correspondent bien aux versions.

    Vous trouverez les fichiers Automation dans le répertoire Windows\\System ou Winnt\\System32. Voici une liste des fichiers à vérifier :
       +---------------+-------------+-----------------------+
       | Nom du fichier|  Version    | Date de modification  |
       +---------------+-------------+-----------------------+
       | Asycfilt.dll  |  2.40.4275  | 8 mars 1999           |
       | Oleaut32.dll  |  2.40.4275  | 8 mars 1999           |
       | Olepro32.dll  |  5.0.4275   | 8 mars 1999           |
       | Stdole2.tlb   |  2.40.4275  | 8 mars 1999           |
       +---------------+-------------+-----------------------+
    						
    Pour vérifier la version d'un fichier, cliquez avec le bouton droit dessus dans l'Explorateur et sélectionnez Propriétés dans le menu contextuel. Les valeurs les plus importantes sont les quatre derniers chiffres du numéro de version des fichiers (le numéro de build) et la date de la dernière modification. Vous devez vous assurer que ces valeurs sont les mêmes pour tous les fichiers Automation.

    Notez que les numéros de version et les dates ci-dessus sont fournis uniquement à titre d'exemple. Vos valeurs peuvent être différentes. Il est important de noter que ces valeurs doivent correspondent entre elles et non pas à ce tableau.

    Si les fichiers ne correspondent pas aux numéros de build ou aux dates de dernière modification, vous pouvez télécharger un utilitaire auto-extractible qui mettra à jour vos fichiers Automation. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    290887 VBRun60sp6.exe installe les fichiers d'exécution Visual Basic 6.0 SP6
  • Un problème a été détecté dans Windows NT 4.0 lors du démarrage des serveurs Automation se trouvant dans un dossier dont le nom contient un espace et/ou ressemble à un autre dossier dont les 8 premiers caractères sont identiques. Par exemple, un serveur se trouvant sur C:\\Programmes\\Dossier peut ne pas démarrer lors d'un appel à CreateObject s'il y a un autre dossier dans le système appelé C:\\Dossier Programmes\\Dossier. Pour plus d'informations, reportez-vous à l'article suivant de la Base de connaissances Microsoft.Pour plus d'informations sur ce problème et la procédure à suivre pour le contourner, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    185126 BOGUE : Echec du démarrage des serveurs COM/OLE sous Windows NT 4.0

Réinstallation de Microsoft Office

Si aucune des procédures précédentes ne permet de résoudre le problème, envisagez de désinstaller, puis de réinstaller Microsoft Office. Microsoft conseille de désinstaller d'abord la version existante, puis de la réinstaller à partir des disques d'installation d'origine.

Pour obtenir la liste complète des éléments à supprimer, consultez les articles suivants de la Base de connaissances.
219423 OFF2000 : Comment faire pour supprimer complètement Microsoft Office 2000
158658 OFF97 : Comment faire pour supprimer complètement Microsoft Office 97

Références

Pour plus d'informations sur le dépannage du message d'erreur "429", cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
240377 COMMENT FAIRE : S'assurer que Jet 3.5 est installé correctement (1ère partie)
Pour obtenir les dernières informations disponibles et un exemple de code concernant l'automatisation de Microsoft Office, reportez-vous au site de Support technique Microsoft à l'adresse suivante :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoxpta/html/vsofficedev.asp

Propriétés

Numéro d'article: 244264 - Dernière mise à jour: jeudi 4 mai 2006 - Version: 6.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Excel 2000 Standard
  • Microsoft Visual Basic 5.0 Édition professionnelle
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic 5.0 Édition Entreprise
  • Microsoft Visual Basic 6.0 Édition Entreprise
  • Microsoft Access 2002
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard
  • Microsoft Excel 2002
  • Microsoft Excel 97 Standard
  • Microsoft FrontPage 2002 Standard
  • Microsoft FrontPage 2000 Standard
  • Microsoft Outlook 2002 Standard
  • Microsoft Outlook 2000 Standard
  • Microsoft Outlook 97 Standard
  • Microsoft Outlook 98 Standard
  • Microsoft PowerPoint 2002 Standard
  • Microsoft PowerPoint 2000 Standard
  • Microsoft PowerPoint 97 Standard
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
Mots-clés : 
kbautomation kbfaq kbinfo KB244264
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com