VBAでExcel/Accessのバージョンやファイル形式を取得するには

VBAでExcel/Accessのバージョンやファイル形式を取得するには

先日、Accessのセミナー講師としてお声がけいただきまして、東京へ行ってまいりました。その終了後の質疑応答にて、複数のPCやファイルでバージョンやファイル形式が違う場合はどのように見分けたら…、という質問をいただいたのですが、こんなふうにできるのでは、という想像でしかお答えできなくて大変申し訳なかったので、ここへ書き残しておきます。


参考

これまで、バージョンは2003以前2007以後でざっくり、ファイル形式は拡張子で見分けていたのですが、もっと詳細に調べる方法があるんですね。

ExcelVBAから操作

Excel/Accessのバージョン

ファイルの形式

AccessVBAから操作

Excel/Accessのバージョン

ファイルの形式

返り値

文字列として返ってきますので、数値として扱いたい場合はCIntなどの型変換が必要です。

Excel/Accessのバージョン

対象バージョン
Office 36516.0
Office 201916.0
Office 201616.0
Office 201315.0
Office 201014.0

Excelファイルの形式

定数
xlExcel739
xlExcel979543
xlExcel856
xlOpenXMLWorkbook51
xlOpenXMLWorkbookMacroEnabled52

試してみたところ、昔作って残っていたxlsファイルは56、現在のxlsxは51、xlsmは52でした。ここに引用してるのは一部ですので、ほかはVBEのオブジェクトブラウザで調べられます。

Accessファイルの形式

定数
acFileFormatAccess22
acFileFormatAccess957
acFileFormatAccess978
acFileFormatAccess20009
acFileFormatAccess200210
acFileFormatAccess200712

こちらもVBEのオブジェクトブラウザで調べられます。手持ちのファイルでmdbは9、accdbは12でした。(Access2000のときに作ったやつだったんだなー)

以上です! いつも似ている業務、似ているアプリを作っているとなかなか自分ではチャレンジできない視点というものもありまして、こういう機会があって私も勉強になります。

当日は激しい雨だったにもかかわらず足をお運びくださった方、ありがとうございました!

公開日:2019/10/31

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)