まりふのひと

Excel2010VBAで互換モード形式でファイル出力するには

先日の改修 の対応方法をググっていて見つけた記事。

 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 オブジェクトを表す変数です。
  • 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は何なの?