VBAでExcel判定(5.0~2019&bit数も)

Application.VersionApplication.Buildからぺぺっと判別します。
Application.Versionはこんな感じ。13がMac用なのかな??

ExcelApplication.Version
5.05
957
978
20009
200210
200311
200712
201014
201315
201616
201916

Application.Buildはビルド番号が取得できますのでServicePackの有無を判別します。
これはMicrosoftから出てますので、要チェケラ!

Excel 2003:http://support.microsoft.com/kb/821549/ja
Excel 2007:http://support.microsoft.com/kb/928116/en
Excel 2010:http://support.microsoft.com/kb/2121559/ja
Excel 2013:http://support.microsoft.com/kb/2951141/ja 
Excel 2016:ServicePack自体がない。あと4229未満がInsidersPreviewっぽい。
Excel 2019:こちらによるとボリュームライセンス版は10337、製品版は10827以降が正式リリース版っぽい

32bitと64bitの判別

実はApplication.OperatingSystemでわかります。
このプロパティにアクセスすると、こんな文字列が返ってきます。

Windows (32-bit) NT 6.01

最近のOSだとNT以降がちょっと変(NT :.00)だったりしますけど、64bitのOS×32bitのExcel環境で実行してみるとわかりますが、 このbit数が実はOSではなくExcelのものなんですよね。
なのでこれでOK。

If InStr(1, Application.OperatingSystem, "32-bit", vbBinaryCompare) <> 0 Then
    ' 32bitです
Else
    ' 64bitです
End If

Excel2016とExcel2019の区別

で、Excel2016とExcel2019がそもそもバージョン番号一緒なんですけど。
2019年4月現在、
CD-ROMからインストールしたOffice 2016は16.0.4822ですが、
ライセンスのみ購入してインストールしたExcel 2016はC2R版になるのか16.0.11328でした。
これの解決方法がまだわかっていません。
PowerShellを使えばなんとかなるみたいだけど、これは私の仕事環境的にチョイスできない。
Win32_Productクラスを利用する方法も試してみましたが、処理の時間にかなりムラがある上、Excel2016はHitするのにExcel2019を入れた環境ではHitせず…。
いえ、逆に「Hitしなければ2019」と言ってもいいのかもしれないけど、それはいくらなんでも危険過ぎるーどうしようー

2019’12月現在、解決策は見つかってません!誰か助けてよ!

OSの判定は?


他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。

2件のコメント

返信を残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)