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

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

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


参考

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

ExcelVBAから操作

Excel/Accessのバージョン

'Excelのバージョン
MsgBox Application.Version 'バージョンの表示

'Accessのバージョン
Dim AcApp As Object
Set AcApp = CreateObject("Access.Application")
MsgBox AcApp.Version 'バージョンの表示
Set AcApp = Nothing

ファイルの形式

'Excelファイル(現在開いているもの)の形式
MsgBox ThisWorkbook.FileFormat 'ファイル形式の表示

'Excelファイル(指定)の形式
Dim wb As Workbook
Set wb = Workbooks.Open("C:\XXX\xxx.xlsm") 'ファイルの指定
MsgBox wb.FileFormat 'ファイル形式の表示
wb.Close

'Accessファイルの形式
Dim AcApp As Object
Set AcApp = CreateObject("Access.Application")
AcApp.OpenCurrentDatabase "C:\XXX\xxx.accdb" 'ファイルの指定
MsgBox AcApp.CurrentProject.FileFormat 'ファイル形式の表示
Set AcApp = Nothing

AccessVBAから操作

Excel/Accessのバージョン

'Accessのバージョン
MsgBox Application.Version 'バージョンの表示

'Excelのバージョン
Dim XlApp As Object
Set XlApp = CreateObject("Excel.Application")
MsgBox XlApp.Version 'バージョンの表示
Set XlApp = Nothing

ファイルの形式

'Accessファイル(現在開いているもの)の形式
MsgBox CurrentProject.FileFormat 'ファイル形式の表示

'Accessファイル(指定)の形式
Dim AcApp As Object
Set AcApp = New Access.Application
AcApp.OpenCurrentDatabase "C:\XXX\xxx.accdb" 'ファイルの指定
MsgBox AcApp.CurrentProject.FileFormat 'ファイル形式の表示
Set AcApp = Nothing

'Excelファイルの形式
Dim XlApp As Object
Set XlApp = CreateObject("Excel.Application")
Dim wb As Object
Set wb = XlApp.WorkBooks.Open("C:\XXX\xxx.xlsm") 'ファイルの指定
MsgBox wb.FileFormat 'ファイル形式の表示
wb.Close
Set XlApp = Nothing

返り値

文字列として返ってきますので、数値として扱いたい場合は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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

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