GetAttr

GetAttr関数はファイルやフォルダの属性を調べる際に利用します。

構文

Function GetAttr(PathName As String) As VbFileAttribute

PathName 属性を調べたいファイルやフォルダのパスを指定します。ファイル名だけを指定した場合はカレントフォルダにあるファイルが対象になります。
VbFileAttribute 取得する属性はVbFileAttribute列挙型で返されます。複数の属性が設定されている場合は各属性の値が加算されて返却されます。

VbFileAttribute列挙型

定数 内容
vbNormal 0 通常ファイル
vbReadOnly 1 読み取り専用ファイル
vbHidden 2 隠しファイル
vbSystem 4 システムファイル
vbVolume 8 ボリュームファイル(使いません)
vbDirectory 16 フォルダ
vbArchive 32 アーカイブ
vbAlias 64 エイリアス(Macのみ。Windowsのショートカット)

 

属性の組み合わせ

GetAttr関数の結果は数値で返却されます。

その際に複数の属性が組み合わさっていることがあります。vbReadOnly(1 読み取り専用ファイル)+ vbHidden(2隠しファイル) などです。

以下でその組み合わせのパターンの一覧を紹介しています。

VBAのGetAttrやSetAttrの定数の組み合わせ一覧

サンプルコード

指定ファイルに設定されている属性をイミディエイトウィンドウに出力するコードです。

 

ある属性が設定されているか確認するには

GetAttr関数で取得した値にある属性が含まれているかどうかを確認したい場合があります。

例えば、GetAttr関数で22が返された場合に読み取り専用のvbReadOnly(1)が設定されているかどうか、などです。

これを調べるにはAnd演算子を利用します。

指定ファイルの属性に読み取り専用が設定されているかを確認するには、以下のコードの11行目のようにAnd演算子を使ってGetAttr関数の結果と調べたい属性をつなげます。

このときAnd演算子で結んだ部分を括弧で囲うことを忘れないようにしてください。

括弧を忘れるとIf文のAnd条件の動作になり、想定した動きになりません。

1. 1つの属性が含まれているか確認する場合のコード

2. 複数の属性が含まれているか確認する場合のコード

調べたい属性を+で結びます。比較の右辺も同様にします。