Ikki2504
Messages postés13Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention26 décembre 2010
-
18 janv. 2009 à 18:28
cudenetf
Messages postés448Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention26 juillet 2012
-
10 juin 2010 à 15:06
Bonjour à tous,
Bien que ce problème ait déjà été abordé sur ce forum, je n'ai pas trouvé la soluce à mon problème et je me permets donc de créer ce topic.
Je suis entrain de développer un module pour une appli C# qui exporte des données vers un fichier Excel. Rien de bien méchant me direz-vous, sauf que dès que je clique sur le bouton me servant à ouvrir mon fichier excel, j'ai ce joli message d'erreur : Exception de HRESULT : 0x800A03EC
Après de (longues) recherches sur le Net, je ne comprends pas la raison de cette erreur.
Le code qui provoque l'erreur :
private void butComptable_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application _xlApp = new Microsoft.Office.Interop.Excel.Application();
object M = null;
_xlApp.Workbooks.Open("Sortie_Comptable.xls", M, false, M, M, M, M, M, M, M, M, M, M, M, M);
}
J'ai bien entendu rajouté : using Microsoft.Office.Interop.Excel; après ajouté la référence Microsoft Excel 12.0 Object Library au projet. Rien à faire
Pour info, je suis sous Win XP SP3, je bosse avec Visual C# 2008 Express Edition et Excel 2007 (l'extension de ce dernier peut être .xls ou .xlsx, peu m'importe, du moment que quelqu'un peut m'expliquer comment résoudre le problème).
Merci énormément
A voir également:
La récupération de la fabrique de classes com pour le composant avec le clsid
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 19 janv. 2009 à 13:59
Re,
Concernant la version de ta librarie Microsoft.Office.Interop.Excel, tu peux effectivement prendre la version 12.0.
Pour l'histoire du "Missing.Value", j'ai oublié de te signaler qu'il faut ajouter pour cela le namespace: using System.Reflection;
A re-tester ^^
Billou_13
Bask En Force
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Ikki2504
Messages postés13Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention26 décembre 2010 19 janv. 2009 à 23:05
Ok c'est bon j'ai trouvé la soluce
Premièrement, dans les propriétés de la référence Microsoft.Office.Interop.Excel, j'ai mis à true la propriété "Copie Locale". En effet, la dll n'apparaissait même pas dans mes sources.
Je ne sais pas si ça a eu beaucoup d'effet ; ce qui est sur, c'est que ça : http://support.microsoft.com/kb/306683 ça a marché... Enfin, jusqu'a la ligne RunMacro, qui n'est pas reconnue par mon appli.
Ouf, une épine dans le pied enlevée.
Bon la macro en VBA, c'est juste "pour faire beau", ça devrait être fait rapidement. Me reste plus qu'a envoyer mes données générées par l'appli C# dans le fichier Excel. J'ai pas encore vraiment cherché, mais à première vue, je sais pas trop comment je vais m'y prendre...
En tout cas, merci de ton aide billou_13, et si jamais tu sais envoyer les données vers le fichier .xls, je suis preneur ;-)
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 19 janv. 2009 à 10:08
Bonjour,
Je soupçonne le object M= null de jouer un rôle dans ton erreur. Essaies plutôt ceci:
_app = new Microsoft.Office.Interop.Excel.Application();
_app.Visible = false;//A toi de voir
_app.DisplayAlerts = false;//A toi de voir
_book = _app.Workbooks.Open(path, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Avec _app et _book en tant que membres de ta classe.
private Microsoft.Office.Interop.Excel.Application _app;
private Workbook _book;
Et le using:
using Microsoft.Office.Interop.Excel;//En ayant ajouter la référence à Microsoft.Office.Interop.Excel version 11.0.0.0 (Add references\onglet NET)
Bonne journée,
Billou_13
Bask En Force
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Vous n’avez pas trouvé la réponse que vous recherchez ?
Ikki2504
Messages postés13Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention26 décembre 2010 19 janv. 2009 à 13:53
Bonjour et merci de t'être intéressé à mon problème.
Malheureusement, ça ne marche pas, mais d'autres problèmes pourraient en être la cause :
Premièrement, la référence que tu me donnes n'existe pas sur mon poste, je ne dispose que de Microsoft.Office.Interop.Excel version 12.0 Object Library (qui se trouve dans l'onglet COM.) Aucune des références de l'onglet NET n'a "Excel" dans son nom (je suis sous Office 2007)
Deuxièmement, suite au refus du compilateur de compiler ton code, je l'ai modifié en ceci :
Sachant que Missing.Value n'est pas reconnu et provoque une erreur à la compil' :
Ce code provoque l'erreur suivante : La récupération de la fabrique de classe COM pour le composant avec le CLSID {00020819-0000-0000-C000-000000000046}a échoué en raison de l'erreur suivante : 80040154.
Serait-ce à cause d'un problème de référence ? Comment le résoudre ?
Merci d'avance :-)
Ikki2504
Messages postés13Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention26 décembre 2010 19 janv. 2009 à 22:03
Effectivement, avec ce namespace, Missing.Value est bien reconnue :)
En revanche, le code :
Microsoft.Office.Interop.Excel.Workbook _book = new Microsoft.Office.Interop.Excel.Workbook();
Microsoft.Office.Interop.Excel.Application _app = new Microsoft.Office.Interop.Excel.Application();
_app.Visible = true;
_book = _app.Workbooks.Open("Sortie_Comptable", Missing.Value, false, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
provoque toujours l'erreur citée à mon message précédent sur la dernière ligne de code. Il semble que ça vienne de Open() mais je vois toujours pas où est le problème. Ce code est similaire à d'autres trouvés sur le Net, qui eux, fonctionnent
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 20 janv. 2009 à 09:29
Bonjour,
Bizarre, bizarre cette histoire de "Copie Locale", je n'ai pas eu à le faire.
Concernant l'envoie de données, je ne me souviens pas trop comment ça se passe mais tu devrais trouver pas mal de sources sur le net.
Personnellement, je n'ai eu que l'appel de macros à faire de mon côté.
Bon courage et bonne journée,
Billou_13
Bask En Force
--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
cudenetf
Messages postés448Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention26 juillet 20122 10 juin 2010 à 15:06
J'ai une question qui est peut etre bete mais ma commande bloque a la 1ere ligne :
Microsoft.Office.Interop.Excel.Application _app = new Microsoft.Office.Interop.Excel.Application();
j'ai l"erreur System.Runtime.InteropServices.COMException: La récupération de la fabrique de classe COM pour le composant avec le CLSID {00024500-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante : 80040154.
j'ai pas excel sur mon ordinateur... est ce bloquant , ne puis -je pas manipuler les fichiers excel si je ne l'ai pas ? ...
je veux modifier (remplir les cases d'un fichier excel dans lequel quelqu'un a fait un tableau, automatiquement a partir d'un programme et les visualiser a partir de open office)