Аргумент SaveAs FileFormat в Excel не зависит от версии - PullRequest
3 голосов
/ 18 ноября 2010

Начиная с 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, и он работал нормально.Кто-нибудь может подтвердить, что это так?

Источник: Использование VBA SaveAs в Excel 2007-2010

Ответы [ 2 ]

1 голос
/ 05 октября 2012

Если вы используете Excel 2003 для сохранения файла формата 2003, тогда вообще не нужно указывать формат файла, так как по умолчанию будет сохраняться формат 2003 в любом случае. Код Application.Version в вопросе работает нормально, но не нужно указывать FileFormat.

Если вы не используете конвертеры документов 2007 года в 2003 году, в этом случае я не знаю, как 2003 будет играть эту карту, но я ожидаю, что она выберет значение по умолчанию (56), если вы не укажете иначе.

Примечание: я, конечно, не могу указать xlFileFormat.xlExcel8 в 2003 году, как предложено выше, так что это не сильно поможет.

0 голосов
/ 18 ноября 2010

Я бы предложил явно использовать xlFileFormat.xlExcel8, что равно 56, если вы хотите получить двоичный документ .xls.

...