Symptômes

Si vous automatisez Microsoft Excel avec Microsoft Visual Basic .NET, Microsoft Visual C# .NET ou Microsoft Visual C++, vous pouvez recevoir l’erreur suivante lors de l’appel de certaines méthodes :

Erreur : 0x80028018 (-2147647512)Description : Ancien format ou bibliothèque de types non valide

Cause

Vous recevez cette erreur lors de l’appel d’une méthode Excel lorsque les conditions suivantes sont remplies :

  • La méthode nécessite un LCID (identificateur de paramètres régionaux).

  • Vous exécutez une version anglaise d’Excel. Toutefois, les paramètres régionaux de l’ordinateur sont configurés pour une langue autre que l’anglais.

Si l’ordinateur client exécute la version anglaise d’Excel et que les paramètres régionaux de l’utilisateur actuel sont configurés pour une langue autre que l’anglais, Excel tente de localiser le module linguistique correspondant à la langue configurée. Si le module linguistique est introuvable, l’erreur est signalée.

Solution de contournement 

Pour contourner ce problème, vous pouvez utiliser l’une des méthodes suivantes :

  • Installez le pack d’interface utilisateur multilingue pour votre version d’Office.

  • Exécutez la méthode ou la propriété Excel à l’aide d’InvokeMember afin de pouvoir spécifier cultureInfo pour l’appel. Par exemple, le code suivant illustre comment appeler la méthode Add de l’objet Workbooks avec « en-US » comme CultureInfo :

    Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oBooks As Object = oApp.WorkbooksDim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
  • Vous pouvez également définir CultureInfo avant d’appeler la méthode Excel. Par exemple :

    Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oldCI As System.Globalization.CultureInfo = _    System.Threading.Thread.CurrentThread.CurrentCultureSystem.Threading.Thread.CurrentThread.CurrentCulture = _    New System.Globalization.CultureInfo("en-US")oApp.Workbooks.Add()System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
  • Créez un répertoire 1033 sous Microsoft Office\Office11. Ensuite, copiez excel.exe dans le répertoire 1033 et renommez-le en xllex.dll. Pour plus d’informations, cliquez sur le lien suivant :http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

Lorsque vous utilisez l’une de ces solutions de contournement pour un ordinateur où les paramètres régionaux ne correspondent pas à la version linguistique actuelle d’Office, vous devez être familiarisé avec le comportement d’Excel et la façon dont Excel interprétera les données qui peuvent être mises en forme pour un paramètre régional spécifique. Pour plus d’informations sur l’écriture de solutions Excel mondialisées avec Visual Studio .NET, consultez les articles suivants dans MSDN :Création de solutions Office à utiliser dans plusieurs pays/régions

http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxProblèmes de globalisation et de localisation pour les solutions créées avec Microsoft Visual Studio Tools pour Microsoft Office System

http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx

État

Microsoft a confirmé qu’il s’agit d’un bogue dans les produits Microsoft répertoriés dans la section « S’applique à ».

Informations supplémentaires

Étapes pour reproduire le comportement

  1. Vérifiez que les paramètres régionaux de l’ordinateur sont définis sur une langue autre que l’anglais.Pour Windows 2000 :

    1. Dans Windows Panneau de configuration, double-cliquez sur Options régionales.

    2. Sous l’onglet Général, sélectionnez un emplacement, puis cliquez sur OK.

    Pour Windows XP ou Windows Server 2003 :

    1. Dans Panneau de configuration, ouvrez Options régionales et linguistiques.

    2. Sous l’onglet Options régionales , sélectionnez des paramètres régionaux, puis cliquez sur OK.

  2. Démarrez Microsoft Visual Studio .NET.

  3. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet. Dans la boîte de dialogue Nouveau projet, sous Types de projets, cliquez sur Projets Visual Basic. Sous Modèles, cliquez sur Application Windows, puis sur OK. Par défaut, Form1 est créé.

  4. Dans le menu Affichage, cliquez sur Boîte à outils, puis ajoutez un bouton à Form1.

  5. Pour afficher la fenêtre de code du formulaire, double-cliquez sur Button1.

  6. Dans la fenêtre de code, remplacez le code suivant

    Private Sub Button1_Click(ByVal sender As System.Object, _                          ByVal e As System.EventArgs) _                          Handles Button1.ClickEnd Sub

    Avec:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click    Dim oApp As Object    Dim oDoc As Object    oApp = CreateObject("Excel.Application")    oApp.Visible = True    oDoc = oApp.Workbooks.Add    oDoc.Close()    oApp.Quit()    oDoc = Nothing    oApp = NothingEnd Sub
  7. Ajoutez la ligne suivante au début du module de code Form1 :

    Option Strict Off
  8. Appuyez sur F5 pour générer et exécuter le programme.

  9. Pour générer l’erreur, cliquez sur Button1. L’erreur se produit sur la ligne qui indique :

    oDoc = oApp.Workbooks.Add

Références

Pour plus d’informations sur Office Automation, visitez le site Web de développement Microsoft Office suivant :

http://support.microsoft.com/ofd En outre, consultez les articles suivants de la Base de connaissances Microsoft :

301982 Comment automatiser Microsoft Excel à partir de Visual Basic .NET

302084 Comment automatiser Microsoft Excel à partir de Microsoft Visual C# .NET

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.