2010-11-18 34 views
3

A partir d'Excel 2007, il est recommandé de fournir un argument FileFormat à la commande Workbook.SaveAs car même si vous avez spécifié un nom de fichier .xls mais sans argument FileFormat, il rendra le fichier corrompu et impossible à lire dans Excel 2003 puisque le nouveau fichier enregistré prendra le format de l'ActiveWorkbook (qui serait 2007).SaveAs L'argument FileFormat dans Excel n'est pas dépendant de la version

Pour enregistrer dans Excel 2003 format compatible, il est suggéré d'utiliser ces FileFormat valeurs suivantes: - si dans Excel 2003 et dans Excel 2007 afin:

If Val(Application.Version) < 12 Then 
    ' You use Excel 97-2003 
    FileExtStr = ".xls": FileFormatNum = -4143 
Else 
    ' you use excel 2007 or later 
    FileExtStr = ".xls": FileFormatNum = 56 
End If 

Cependant j'ai essayé d'employer -4143 indépendamment si le client exécutant était Excel 2003 ou 2007 et cela a fonctionné bien. Quelqu'un peut-il confirmer si c'est le cas?

Source: Use VBA SaveAs in Excel 2007-2010

Répondre

0

Je suggère d'utiliser explicitement xlFileFormat.xlExcel8 ce qui équivaut à 56 si vous souhaitez obtenir un document .xls binaire.

1

Si vous utilisez Excel 2003 pour enregistrer un fichier au format 2003, il n'est pas nécessaire de spécifier le format de fichier, car le format par défaut serait de sauvegarder le format 2003. Le code Application.Version dans la question fonctionne bien - mais pas besoin de spécifier le FileFormat. À moins que vous n'utilisiez les convertisseurs de document 2007 en 2003, auquel cas je ne sais pas comment jouerait cette carte en 2003, mais je m'attends à ce qu'elle choisisse la valeur par défaut (56) sauf indication contraire.

NB: Je ne peux certainement pas spécifier xlFileFormat.xlExcel8 en 2003, comme suggéré ci-dessus, donc ce n'est pas beaucoup d'aide.