FileSystemObjectのGetFileVersionメソッド
FileSystemObjectのGetFileVersionメソッドは、引数で指定したファイルパスのファイルのバージョンを返します。バージョンをもっていないファイルの場合は空文字列を返します。
存在しないファイルパスの場合はエラーになります。
FileSystemObjectの他のメソッドやプロパティは「FileSystemObjectとTextStreamのメソッド・プロパティ一覧」をご参照ください。
構文
Function GetFileVersion(FileName As String) As String
FileName | ファイルパスを指定します。 |
戻り値 | 引数ファイルパスがバージョン情報を持っていればそのバージョン値を文字列で返します。 |
バージョン情報を持つファイル
一般的にバージョン情報を持つファイルというのは、アプリケーション(*.exe)やダイナミックリンクライブラリ(*.dll)などの実行ファイルに分類されるものがほとんどです。
テキストファイル(*.txt)のような補足情報を持たないファイルはバージョン情報を持っていないため、GetFileVersionメソッドを使っても当然何も取得できません。
エラー対応
GetFileVersionメソッドでは、引数に存在しないファイルパスを渡すと、実行時エラー「-2147024894 ‘GetFileVersion’ メソッドは失敗しました: ‘IFileSystem3’ オブジェクト」のようなエラーが発生します。
このようなエラーが発生すると通常はメッセージボックスが表示され、処理はそこで止まってしまいます。
処理を止めないようにするためにはエラー処理を適切に行う必要があります。
具体的には「On Error Goto XXX」でエラー発生時にエラーラベルまで処理を飛ばしたり、「On Error Resume Next」でエラーが発生しても処理を継続するようにしておいたほうがよいでしょう。
事前設定
以下のサンプルコードでは参照設定でFileSystemObjectクラスを利用できるようにしています。
FileSystemObjectクラスを利用するには、事前にVBA画面→ツールメニュー→参照設定、を選択し、参照設定ダイアログで「Microsoft Scripting Runtime」にチェックを付けます。
詳細は「VBAでのFileSystemObjectとTextStreamの使い方」の事前設定をご参照ください。
サンプルコード
ファイルパスのバージョン情報を取得するサンプルです。
ここでは例としてWindowsのDLLを利用しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub FileSystemObjectGetFileVersion() '// エラー発生時も処理を継続 On Error Resume Next Dim fso As New FileSystemObject '// FileSystemObjectクラス Dim sFilePath '// ファイルパス Dim sVersion '// バージョン '// ファイルパスを指定 sFilePath = "C:\Windows\System32\imageres.dll" '// 指定ファイルのバージョン情報を取得 sVersion = fso.GetFileVersion(Filename:=sFilePath) '// エラー発生時 If Err.Number <> 0 Then '// エラー内容を出力 Debug.Print Err.Number & " " & Err.Description Exit Sub End If Debug.Print sVersion End Sub |
指定したファイルパスからバージョン情報を取得するコードです。
GetFileVersionメソッドは引数が存在しないファイルパスの場合にエラーが発生するため、エラー処理「On Error Resume Next」でエラーが発生しても処理を継続するようにしています。
エラーが発生した場合はその内容をイミディエイトウィンドウに出力します。エラーが発生していない場合は取得したバージョン値を処理の最後で出力します。
FileSystemObjectクラスのオブジェクト変数に対して、「Set fso = Nothing」のようなコードがありませんが、なくても問題ありません。詳細については「VBAでのFileSystemObjectとTextStreamの使い方」をご参照ください。