Création en vb.net fichiers Excel 2003 et 2007 incompatible [Résolu]

stef68600 42 Messages postés vendredi 31 juillet 2009Date d'inscription 26 juillet 2013 Dernière intervention - 10 mars 2010 à 20:24 - Dernière réponse : stef68600 42 Messages postés vendredi 31 juillet 2009Date d'inscription 26 juillet 2013 Dernière intervention
- 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
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
stef68600 42 Messages postés vendredi 31 juillet 2009Date d'inscription 26 juillet 2013 Dernière intervention - 11 mars 2010 à 20:36
3
Merci
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

Merci stef68600 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de stef68600
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 mars 2010 à 20:51
0
Merci
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
Commenter la réponse de cs_casy
stef68600 42 Messages postés vendredi 31 juillet 2009Date d'inscription 26 juillet 2013 Dernière intervention - 10 mars 2010 à 21:10
0
Merci
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
Commenter la réponse de stef68600
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 mars 2010 à 21:47
0
Merci
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
Commenter la réponse de cs_casy
stef68600 42 Messages postés vendredi 31 juillet 2009Date d'inscription 26 juillet 2013 Dernière intervention - 10 mars 2010 à 22:15
0
Merci
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
Commenter la réponse de stef68600
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 10 mars 2010 à 22:29
0
Merci
Et comme ça ?

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


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
stef68600 42 Messages postés vendredi 31 juillet 2009Date d'inscription 26 juillet 2013 Dernière intervention - 10 mars 2010 à 22:59
0
Merci
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
Commenter la réponse de stef68600
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 11 mars 2010 à 13:42
0
Merci
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
Commenter la réponse de cs_casy
stef68600 42 Messages postés vendredi 31 juillet 2009Date d'inscription 26 juillet 2013 Dernière intervention - 11 mars 2010 à 14:23
0
Merci
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
Commenter la réponse de stef68600
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 11 mars 2010 à 17:05
0
Merci
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
Commenter la réponse de cs_casy
stef68600 42 Messages postés vendredi 31 juillet 2009Date d'inscription 26 juillet 2013 Dernière intervention - 11 mars 2010 à 17:29
0
Merci
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
Commenter la réponse de stef68600
stef68600 42 Messages postés vendredi 31 juillet 2009Date d'inscription 26 juillet 2013 Dernière intervention - 12 mars 2010 à 15:04
0
Merci
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
Commenter la réponse de stef68600

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.