开发者

SaveAs FileFormat argument in Excel isn't version-dependent

开发者 https://www.devze.com 2023-01-25 09:49 出处:网络
Starting in Excel 2007 it is recommende开发者_运维技巧d that you provide a FileFormat argument to the Workbook.SaveAs command because even if you specified a .xls filename but without a FileFormat arg

Starting in Excel 2007 it is recommende开发者_运维技巧d that you provide a FileFormat argument to the Workbook.SaveAs command because even if you specified a .xls filename but without a FileFormat argument, it will make the file corrupt and unable to be read in Excel 2003 since the newly saved file will take the format of the ActiveWorkbook (which would be 2007).

In order to save in Excel 2003 compatible format, it is suggested to use these following FileFormat values: -4143 if in Excel 2003 and 56 in Excel 2007 as so:

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

However i tried using -4143 regardless if the executing client was Excel 2003 or 2007 and it worked fine. Can anyone confirm if this is the case?

Source: Use VBA SaveAs in Excel 2007-2010


If you're using Excel 2003 to save a 2003 format file, then there's no need to specify the file format at all, since the default would be to save 2003 format anyway. The Application.Version code in the question works fine -- but no need to specify the FileFormat.

Unless you're using the 2007 document converters in 2003, in which case I don't know how 2003 would play that card, but I expect it'll choose the default (56) unless you specify otherwise.

NB: I certainly can't specify xlFileFormat.xlExcel8 in 2003, as suggested above, so that's not much help.


I'd suggest explicitly using xlFileFormat.xlExcel8 which equals 56 if you want to get a binary .xls document.

0

精彩评论

暂无评论...
验证码 换一张
取 消