Aller au contenu

[RESOLU] VBScript - Objets Excel de création


ggbce

Messages recommandés

Bonjour,

J'ai un problème avec l'exécution de certains VBScript que j'utilise. J'utilisais ces scripts depuis déjà un bon bout de temps et ils sont très pratiques... mais là je commence à avoir des postes avec Excel 2003 et d'autres avec Excel 2010.

Sous Excel 2010, le script "fonctionnerait" bien si je nommerais le fichier .XLSX car il tente de générer par défaut le fichier en format 2010. Mais je ne peux pas modifier mes scripts car j'ai plusieurs utilisateurs avec Excel 2000, XP ou 2003 encore.

Voilà je vous montre le début du script qui génère mon fichier Excel:

' Utilise les objets ExcelSet objXL = WScript.CreateObject("Excel.Application") ' Génère un classeur Excel viergeobjXL.Workbooks.Add ' Génère une feuille dans le classeurobjXL.Sheets.Add.Name = "Test"' Enregistre le classeur Excel dans l'emplacement spécifiéobjXL.ActiveWorkbook.SaveAs("TestXL.xls")' Ouvre le classeur Excel (le même que précédemment créé)Set objWB = objXL.WorkBooks.Open("TestXL.xls")'Et maintenant que j'ai ouvert mon fichier je continue et je peux travailler dans le classeur Excel... !!!

Avec Excel 2010, lorsqu'il veut rouvrir le fichier ça ne fonctionne pas bien car l'extension du fichier est XLS... mais c'est un fichier XLSX qui a été généré en réalité !!!

Est-ce qu'il y a un moyen avec l'objet SaveAs de spécifier le format Excel 97-2003 ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

J'ai trouvé comment enregistrer en format Excel 97-2003 sur un PC qui possède Excel 2007/2010 quand j'exécute mon VBScript... sauf que lorsque je l'exécute sur un PC ayant Excel 2003 ça ne fonctionne plus car il ne reconnait pas la valeur du paramètre utilisé :(

Voici comment définir le format de fichier:

objXL.ActiveWorkbook.SaveAs GetPath() & "TestXL.xls", 56' 56 = Excel 97-2003

Je me suis dit si j'utilise le format Excel 95/97 (option 43) que ça pourrait fonctionner... mais Excel 2010 ne semble pas vouloir le faire... même si Microsoft dit que oui.

Avez-vous une autre idée ? Du genre vérifier la version d'Excel présente avant et utiliser cette ligne si Excel 2000-2003:

objXL.ActiveWorkbook.SaveAs GetPath() & "TestXL.xls"

Sinon utiliser ceci si Excel 2007-2010:

objXL.ActiveWorkbook.SaveAs GetPath() & "TestXL.xls", 56
Lien vers le commentaire
Partager sur d’autres sites

Bien finalement... j'ai trouvé !

Pour les intéressés:

Dim xlVerSet objXL = WScript.CreateObject("Excel.Application") ' Détermine la version d'Excel (12.0 = 2007)xlVer = Split(objXL.Version,".")(0) ' Génère un classeur Excel viergeobjXL.Workbooks.Add ' Génère une feuille dans le classeurobjXL.Sheets.Add.Name = "Allo"' Enregistre le classeur Excel dans l'emplacement spécifié (dossier en cours via GetPath + nom du fichier TestXL.xls)If xlVer >= "12" Then objXL.ActiveWorkbook.SaveAs GetPath() & "TestXL.xls", 56 ' 56 = Excel 97-2003 ' Voir la page http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlfileformat.aspxElse objXL.ActiveWorkbook.SaveAs GetPath() & "TestXL.xls"End If' Ouvre le classeur Excel (le même que précédemment créé)Set objWB = objXL.WorkBooks.Open(GetPath() & "TestXL.xls")' Se positionne dans le bonne feuille Set objWS = objXL.ActiveWorkBook.WorkSheets("Allo")  ...objWB.Close objXL.Quit' --------------'Fonction pour déterminer le répertoire en coursFunction GetPath() Dim path path = WScript.ScriptFullName GetPath = Left(path, InStrRev(path, "\"))End Function
Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...