2011年11月25日金曜日

Excelのバーションを自動判断保存する(警告なし)のサンプル

Excelの各バーション(95,97,2000,2003,2007,2010)file format一覧表


Excel 定数 拡張子 説明
97-2003 xlWorkbookNormal -4143 .xls 既定のExcel2003ベースのファイル形式
2007-2010 xlWorkbookDefault 51 .xlsx 既定のExcel2007ベースのファイル形式、VBAなし
2007-2010 xlOpenXMLWorkbookMacroEnabled 52 .xlsm Excel2007ベースのマクロ有効ファイル形式、VBA有効
2007-2010 xlExcel12 50 .xlsb Excel2007バイナリファイル形式(BIFF12)
2007-2010 xlExcel8 56 .xls Excel 97 - 2003のバイナリファイル形式(BIFF8)
2007-2010 xlExcel5 39 .xls Excel 5.0/95のバイナリファイル形式(BIFF5)

サンプル
'まずは拡張子を定義
    Public Const Extension_Excel2003 As String = ".xls" '2003エクセルの拡張子
    Public Const Extension_Excel2007 As String = ".xlsx" '2007エクセルの拡張子

    '2007エクセル(マクロ)の拡張子、保存するファイルにVBAが含まれる時はこっちを使ってください
    Public Const Extension_Excel2007_With_Macro As String = ".xlsm"

    'まずはfileFormat定数を定義
    Public Const Excel2003FileFormat As Long = -4143
    Public Const Excel2007FileFormat As Long = 51
    Public Const Excel2007FileFormatWithMacro As Long = 52

    Public gExt As String
    Public gFormat As Long

    '使っているEXCELのバージョンが97-2003
    If Val(Application.Version) < 12 Then
        gExt = Extension_Excel2003 
        gFormat = Excel2003FileFormat
    Else '2007-2010の場合
        gExt = Extension_Excel2007
        gFormat = Excel2007FileFormat
    End If

    '保存
    Application.DisplayAlerts = False
    With someWorkbook
        .SaveAs Filename:= strFileName & gExt, FileFormat:=gFormat
    End With
    Application.DisplayAlerts = True

4 件のコメント:

  1. 97-2003 xlWorkbookNormal -4143 .xls 既定のExcel2007ベースのファイル形式、VBAなし

    は、VBAなしとありますが、実際はありですよね?

    返信削除
    返信
    1. 指摘ありがとうございました、vbaあってもなくても、拡張子はxlsだった気がする。

      削除
  2. Excelの各バーション(95,97,2000,2003,2007,2010)file format一覧表
    の1行目に
    97-2003 xlWorkbookNormal -4143 .xls 既定のExcel2007ベースのファイル形式、VBAなし
    との記述がありますが、これは正しくは、
    97-2003 xlWorkbookNormal -4143 .xls 既定のExcel2003ベースのファイル形式、VBAなし
    ということですよね?

    返信削除
  3. ご指摘ありがとうございました、訂正しました。

    返信削除