Création en vb.net fichiers Excel 2003 et 2007 incompatible

Résolu
stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013 - 10 mars 2010 à 20:24
stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013 - 12 mars 2010 à 15:04
Bonjour à tous,

je suis dans la panade...

je crée des fichiers xls via ces instructions :
oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.Open(Filename:=nom_fichier)
oSheet = oExcel.ActiveSheet

le problème c'est qu'a l'origine les pc de la boite avait Excel 2003 tout allait bien.

depuis quelque temps Excel 2007 apparait ce qui ne pose pas de prob à la construction du fichier.

mais impossible d'ouvrir le fichier avec Excel 2003 et 2007.
Je pense que cela viens du système d'interpolation qui était en V11 pour Excel 2003 et est maintenant en V12 pour excel 2007.

ma question : comment continuer à fabriquer mes fichiers pour qu'il soit compatible en version 2003 et 2007 ???

Merci de votre aide.
Cordialement.

debutant

12 réponses

stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013
11 mars 2010 à 20:36
Casy, ça à l'air ok.

suppression de la réference
et
oBook.Saveas(Filename:=nom_fichier, FileFormat:=56)

j'arrive à ouvrir, modifier, supprimer avec un excel 2007 sur le poste.

j'arrive a ouvrir le fichier en excel 2003 sur un autre poste.

il me reste à essayer une appli qui a excel 2003 et verifier si le fichier s'ouvre en 2007 pour être compatible à 100%
je regarde ça demain et te tiens au courant.

vraiment un grand merci, à vous tous.

Cordialement.


debutant
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2010 à 20:51
Excel 2007 ouvre parfaitement les fichiers d'Excel 2003 (.xls)

Excel 2003 avec le module de compatibilité (à télécharger gratuitement chez Microsoft) ouvre parfaitement les fichiers Excel 2007 (.xlsx)



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013
10 mars 2010 à 21:10
Bonsoir Casy,

ça c'est la théorie, mais en faite j'ai déja fait ce test et le fichier crée avec mon appli et excel 2007 installé.ben pour l'ouvrir avec excel 2003 et le convertisseur ça marche pas.

car c'est la que tu me mets sur une piste, c'est que le fichier continu à être crée en extension *.XLS

que je suis bête...

néanmoins malgré ma bétise, je pensais que mes commandes ( save=nomfichier) allais crée un fichier sous format excel 2003 avec 2007(comme enregistré sous "format excel 97-2003").

donc ce qu'il reste comme question :

1) comment détecter la version excel installer ?
2)comment forcer l'enregistrement sous "format excel 97-2003")si la détection trouve EXCEL 2007 ?

a moins que la version interpolation soit primordiale.

merci d'avance de votre aide.


debutant
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2010 à 21:47
Dans l'exemple que tu donne, tu utilise Workbooks.Open. Tu ouvre donc un fichier déjà existant. Dans ce cas il sera ouvert dans le format ou il a été créé.

C'est plutôt au moment de la création qu'il faut faire attention

Quelques pistes :

sur ton objet oExcel, tu as une propriété Version qui va te donner la version d'Excel en cours d'utilisation qui pourra t'aider à déterminer l'extension d'un nouveau fichier.

Ou

Sur ton book tu as une propriété FileFormat, associée à la méthode SaveAs, tu devrais pouvoir forcer le format Excel 2003 lors de la création


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013
10 mars 2010 à 22:15
ok voila ce qui fonctionne :
avec chemin en dur
oBook.Saveas("c:\titi.xls", oExcel.FileFormat = "xlExcel8")
ou
oBook.Saveas("c:\toto.xls", oExcel.xlWorkbookNormal)

le problème c'est que ça passe pas en chemin relatif avec "filename:=monfichier" ça me dit filename n'est pas déclaré.

aurait-tu une idée ?

Cordialement.

debutant
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mars 2010 à 22:29
Et comme ça ?

obook.SaveAs Filename:=monfichier, FileFormat:=XlFileFormat.xlExcel8


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013
10 mars 2010 à 22:59
désolé,

je suis allé trop vite ça fonctionne pas en dur j'avais pas d'erreur à la compile .
erreur :
Le membre public 'FileFormat' du type 'ApplicationClass' est introuvable.
avec:
oBook.Saveas("c:\hotline\toto.xls", oExcel.FileFormat = "xlExcel8")

erreur : La méthode SaveAs de la classe Workbook a échoué.
avec:
oBook.Saveas("c:\hotline\toto.xls", FileFormat:="XlFileFormat.xlExcel8")

une autre idée ?

Cordialement.

debutant
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
11 mars 2010 à 13:42
pas d'autres idées

tel que je te l'ai donné, chez moi ça marche très bien.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013
11 mars 2010 à 14:23
peut-être une piste supplémentaires, mon appli est faite en VB2008 express.
il faut peux-être ajouter un composant ??

je suis un peu sec, j'ai essayé des dizaines d'exemples sans succès je doit raté quelque chose mais je sais pas quoi.

help help.

Cordialement.

debutant
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
11 mars 2010 à 17:05
Après un peu de recherche, j'ai quelques explications.

En utilisant les liaisons tardives dans la création de tes objets Excel (ça, tu n'as as le choix pour pouvoir être compatible avec plusieurs versions) les constantes des énumérés ne sont pas reconnues car pas connues à l'avance.
Tu ne peux donc pas écrire ta ligne "SaveAs" avec l'énuméré xlExcel8. Il faut obligatoirement y mettre à la place directement la valeur numérique de l'énuméré correspondant soit 56 dans le cas présent.

Si tu souhaite quand même utiliser une valeur littérale (car plus lisible), la solution est de créer une constante ayant pour valeur 56 :
		Const XLEXCEL8 As Integer = 56

Dim oExcel As Object
Dim oBook As Object

oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.Add()

oBook.SaveAs(Filename:="C:\temp\toto.xls", FileFormat:=XLEXCEL8)
oBook.Close()
oExcel.Quit()
oExcel = Nothing



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013
11 mars 2010 à 17:29
merci casy, de ton aide.
cette remarque est très pertinante et je vais l'appliquer.
par contre (je poste aussi sur develloper.XXX) on c'est apercu qu'il manquait la ref de la dll d'interpolation.
maintenant j'ai ajouté cette ref , mais l'imports ne fonctionne pas (déclaration).

as-tu une idée, ça me dit ref introuvable.

Merci pour tes recherches et ton temps que tu me consacre.
Cordialement


debutant
0
stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013
12 mars 2010 à 15:04
Bonjour a tous,

voici mes resultats :

appli avec excel 2003 = plantage error "la methode saveas de worbook à échoué".

donc je pense qu'il va falloir vérifier la version excel avant la sauvegarde et appliquer différement saveas suivant la version.

pas souple du tout cette affaire...

Cordialement.



debutant
0
Rejoignez-nous