Excel VBAの「GetAttr 関数」について解説します。
GetAttr 関数とは
Excel VBA の GetAttr 関数は、指定したファイルやフォルダの属性を取得するための関数です。ファイルやフォルダの属性を確認することで、特定の属性を除外したり または 絞り込んだりする際に役立ちます。
GetAttr 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。
GetAttr 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
GetAttr(pathname)
引数
引数 | 説明 |
---|---|
pathname | 【必須】ファイル名やフォルダ名を表す文字列式を指定します |
戻り値
戻り値 | 説明 |
---|---|
属性を示す値 (Integer) | ファイルまたはフォルダの属性を表す値(Integer)を返します ※ 属性が複数ある場合はその値の合計が返されます |
戻り値は次の属性の合計値です。
定数 | 値 | 説明 |
---|---|---|
vbNormal | 0 | 標準 |
vbReadOnly | 1 | 読み取り専用 |
vbHidden | 2 | 隠し(非表示) |
vbSystem | 4 | システムファイル |
vbDirectory | 16 | フォルダ |
vbArchive | 32 | アーカイブ * |
解説(使用例)
GetAttr 関数の使い方をサンプルで確認しましょう。
GetAttr 関数サンプル
指定したファイルやフォルダの属性を確認する例を紹介します。
単一ファイルの属性を確認する例
指定ファイルが標準ファイルかどうか確認し、そうでなかった場合ファイルの属性を調べて表示します。
'■GetAttr関数使用例1(単一ファイルの属性を確認する例)
Sub GetAttr_Sample01()
Dim fName As String
Dim strAttr As String
Dim i As Integer
' 指定ファイルの存在確認は省略しています
fName = "C:\VBA_test\Sample_02.xls"
i = GetAttr(fName)
If i = vbNormal Then
MsgBox fName & "は標準ファイルです"
Else
' GetAttr関数の戻り値から属性を判断して表示します
Dim str As String
Do While i <> 0
Select Case i
Case Is >= 32: str = "【アーカイブ】": i = i - 32
Case Is >= 16: str = "【フォルダ】": i = i - 16
Case Is >= 4: str = "【システム】": i = i - 4
Case Is >= 2: str = "【非表示(隠し)】": i = i - 2
Case Is >= 1: str = "【読み取り専用】": i = i - 1
End Select
strAttr = strAttr & str & vbCrLf
Loop
MsgBox fName & "は標準ファイルではありません" & _
vbCrLf & "以下の属性を持っています" & _
vbCrLf & strAttr
End If
End Sub
指定ファイルが標準ファイルだった場合に表示される MsgBox画像です。
標準ファイルではなかった場合、次のようにファイルの属性を調べて表示します。
14~23行目は、GetAttr 関数の戻り値が複数の属性を持っている場合、ループして値を解析してすべての属性を表示するようにしています。
GetAttr 関数は、指定したパスにファイルやフォルダが存在しなかった場合、実行時エラーが発生します。この例では省略していますが、エラーハンドリングを設定しておくのが良いでしょう。
フォルダ内の一覧を属性付きで表示する例
指定したフォルダ内を検索して、各ファイルやフォルダの一覧を属性付きで表示します。
'■GetAttr関数使用例2(フォルダ内の一覧を属性付きで表示する例)
Sub GetAttr_Sample02()
Dim fName As String, path As String
Dim strAttr As String, fList As String
Dim i As Integer
Dim str As String
' 検索するパスを指定
path = "C:\VBA_test\"
' パス内のファイル・フォルダを検索(隠し属性を含む)
fName = Dir(path, vbDirectory + vbHidden)
' 検索結果に対する処理
If fName <> "" Then
fList = "見つかったファイル・フォルダの一覧とその属性:"
'複数の存在を確認
Do While fName <> ""
' "." と ".." は除外する
If fName <> "." And fName <> ".." Then
i = GetAttr(path & fName)
' GetAttr関数の戻り値から属性を判断して表示します
If i = 0 Then strAttr = "【標準】"
Do While i <> 0
Select Case i
Case Is >= 32: str = "【アーカイブ】": i = i - 32
Case Is >= 16: str = "【フォルダ】": i = i - 16
Case Is >= 4: str = "【システム】": i = i - 4
Case Is >= 2: str = "【非表示(隠し)】": i = i - 2
Case Is >= 1: str = "【読み取り専用】": i = i - 1
End Select
strAttr = strAttr & str
Loop
fList = fList & vbCrLf & fName & ":属性=" & strAttr
strAttr = ""
End If
fName = Dir() ' 次のファイル・フォルダを取得
Loop
MsgBox fList ' 見つかったファイル・フォルダの一覧を表示
Else
MsgBox "ファイル・フォルダは見つかりませんでした。"
End If
End Sub
指定フォルダ内のファイルやサブフォルダの属性を調べて次のように表示します。
・フォルダ内に存在するファイルやサブフォルダを Dir 関数で一つづつ発見していきます。
・見つかった Dir 関数の戻り値を一つ目のサンプル同様に GetAttr 関数の戻り値から属性を解析しています。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA の GetAttr 関数は、指定したファイルやフォルダの属性を示す整数を返します。複数の属性を持っている場合に返される値は属性を示す定数(値)の組み合わせです。
ファイルやフォルダの属性を確認することで、ファイルやフォルダに対する適切な処理を行うことができます。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;