Excel中的SaveAs FileFormat参数不依赖于版本

时间:2010-11-18 01:42:38

标签: vba excel-vba excel-2007 file-format excel

从Excel 2007开始,建议您为FileFormat命令提供Workbook.SaveAs参数,因为即使您指定了.xls文件名但没有FileFormat参数,它也会生成文件损坏,无法在Excel 2003中读取,因为新保存的文件将采用ActiveWorkbook的格式(将是2007年)。

为了保存Excel 2003兼容格式,建议使用以下FileFormat值: - 4143 ,如果在Excel 2003中, 56 在Excel 2007中如此:

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

但是我尝试使用 -4143 ,无论执行的客户端是Excel 2003还是2007,并且它运行正常。任何人都可以确认是否是这种情况吗?

来源:Use VBA SaveAs in Excel 2007-2010

2 个答案:

答案 0 :(得分:1)

如果您使用Excel 2003保存2003格式文件,则根本不需要指定文件格式,因为默认情况下无论如何都要保存2003格式。问题中的Application.Version代码工作正常 - 但不需要指定FileFormat。

除非您在2003年使用2007年的文档转换器,否则我不知道2003年该如何使用该卡,但我希望它会选择默认值(56),除非您另有说明。

注意:如上所述,我当然不能在2003年指定xlFileFormat.xlExcel8,因此没什么帮助。

答案 1 :(得分:0)

如果你想获得二进制.xls文档,我建议明确使用等于56的xlFileFormat.xlExcel8