先日の改修 の対応方法をググっていて見つけた記事。
■ Office 2007で問題になるマクロの後方互換性 (Kazzzの日記)
通常 Excel2007で使う XlFileFormat 列挙体の定数
- 51 = xlOpenXMLWorkbook (without macro's in 2007, xlsx)
- 52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007, xlsm)
- 50 = xlExcel12 (Excel Binary Workbook in 2007 with or without macro’s, xlsb)
- 56 = xlExcel8 (97-2003 format in Excel 2007, xls)
従って、Excel 97-2003 ブック形式で保存する VBA ならば
ActiveWorkbook.SaveAs Filename:="ワークブックの保存パス", FileFormat:=XlFileFormat.xlExcel8で OK のはずだ。
‥‥
XlFileFormat.xlExcel8 は逆に過去の Office で使えない可能性があるので、アプリケーションのバージョンを判定しないと駄目かも。Dim newBook As String newBook = "ワークブックの保存パス" '以前のExcelなら指定無しで保存 If Val(Application.Version) < 12 Then ActiveWorkbook.SaveAs Filename:=newBook Else ActiveWorkbook.SaveAs Filename:=newBook, FileFormat:=XlFileFormat.xlExcel8 End If
■ Excel2010のヘルプ
- Workbook.SaveAs メソッド
ブックへの変更を別のファイルに保存します。 - 構文
- 式.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)
式 Workbook オブジェクトを表す変数です。
- 式.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)
- FileFormat ファイルを保存するときのファイル形式。
名前 | 値 | 説明 | |
---|---|---|---|
xlExcel12 | 50 | Excel12 ‥‥ Excel2007 | |
xlOpenXMLWorkbook | 51 | XML ブックを開く | |
xlWorkbookDefault | 51 | ブックの既定 | |
xlOpenXMLWorkbookMacroEnabled | 52 | マクロを有効にした XML ブックを開く | |
xlOpenXMLTemplateMacroEnabled | 53 | マクロを有効にした XML テンプレートを開く | |
xlOpenXMLTemplate | 54 | XML テンプレートを開く | |
xlOpenXMLAddIn | 55 | XML アドインを開く | |
xlExcel8 | 56 | Excel8 ‥‥ Excel97 |
因みに、Excel2010は 14 と表示された。12が Excel2007 とすれば、13は何なの?