VBAで利用できる関数です。
指定したファイル(フルパスで指定)の属性を表す数値を返します。
使用例
例1
コード
作成後、属性を変更していないファイルを指定した場合です。
Sub Func_GetAttr() MsgBox GetAttr("E:\テストフォルダ\test.txt") End Sub
※¥がバックスラッシュとして表示されているかもしれません(以下同様)。
出力
この場合ファイルにアーカイブ属性があるため戻り値は「32」となります。
ファイルプロパティでアーカイブ属性を外すと戻り値は「0」になりますが、ファイルに変更を加えるとアーカイブ属性が再度付与されますので「32」に戻ります。
例2
コード
作成後、読み取り専用属性を追加したファイルを指定した場合です。
Sub Func_GetAttr() MsgBox GetAttr("E:\テストフォルダ\test2.txt") End Sub
出力
ファイルに読み取り専用属性(1)とアーカイブ属性(32)があるため、戻り値は「33」となります。
例3
コード
戻り値と定数のビット演算(And)により各属性の有無を判定します。
作成後、読み取り専用属性を追加したファイルを指定しています。
Sub Func_GetAttr() MsgBox (GetAttr("E:\テストフォルダ\test2.txt") And vbReadOnly) & "," & _ (GetAttr("E:\テストフォルダ\test2.txt") And vbHidden) & "," & _ (GetAttr("E:\テストフォルダ\test2.txt") And vbSystem) & "," & _ (GetAttr("E:\テストフォルダ\test2.txt") And vbDirectory) & "," & _ (GetAttr("E:\テストフォルダ\test2.txt") And vbArchive) End Sub
出力
読み取り専用(vbReadOnLy)に対応する値(1)とアーカイブ属性に対応する値(32)が返され、他の属性に関しては0が返されます。
なお「通常(vbNormal)」を意味する戻り値は0ですので「~ And vbNormal」としても常に0が返ってきます。よってこの例では省略しています。「~ And vbNormal」がの結果が0だからといって他の属性に該当しないということではありません。
例4
コード
ブートドライブを指定した場合です。
Sub Func_GetAttr() MsgBox GetAttr("C:") End Sub
出力
例5
コード
その他のドライブを指定した場合です。
Sub Func_GetAttr() MsgBox GetAttr("E:") End Sub
出力
例6
コード
フォルダを指定した場合です。
Sub Func_GetAttr() MsgBox GetAttr("E:\テストフォルダ") End Sub
出力
書式
GetAttr(フルパス)
備考
戻り値の意味は次のとおりです。
戻り値 | 意味 |
---|---|
0 | 通常(定数vbNormalに対応) |
1 | 読み取り専用(定数vbReadOnlyに対応) |
2 | 隠しファイルおよびフォルダ(定数vbHiddenに対応) |
4 | システムファイル(定数vbSystemに対応) |
16 | フォルダ(定数vbDirectoryに対応) |
32 | アーカイブ属性(定数vbArchiveに対応) バックアップの対象になるかならないかを表すフラグです。 |
64 | エイリアス(定数vbAliasに対応) macintoshでのみ取り得る値なので通常戻ってくることはありません。 |
戻り値が特定の属性を含んでいるのかどうかについては、上記例3のようにAnd演算子と定数を使って判定することができます。ただし「~ And vbNormal」の結果は常に0になります(この結果が0であるからといって、GetAttr関数の戻り値が0であるとはいえません)。