本ページには広告が含まれています。

VBA GetAttr 関数 ファイルやフォルダの属性を取得する

VBA GetAttr 関数 ファイルやフォルダの属性を取得する

Excel VBAの「GetAttr 関数」について解説します。

スポンサーリンク

GetAttr 関数とは

Excel VBA の GetAttr 関数は、指定したファイルやフォルダの属性を取得するための関数です。ファイルやフォルダの属性を確認することで、特定の属性を除外したり または 絞り込んだりする際に役立ちます。

GetAttr 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。

GetAttr 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

GetAttr(pathname)

引数

引数 説明
pathname【必須】ファイル名やフォルダ名を表す文字列式を指定します

戻り値

戻り値説明
属性を示す値
(Integer)
ファイルまたはフォルダの属性を表す値(Integer)を返します
※ 属性が複数ある場合はその値の合計が返されます

GetAttr 関数が返す属性の値一覧」 戻り値は次の属性の合計値です。

定数説明
vbNormal0標準
vbReadOnly1読み取り専用
vbHidden2隠し(非表示)
vbSystem4システムファイル
vbDirectory16フォルダ
vbArchive32アーカイブ *
* アーカイブとは、まだバックアップしていないファイルに付く属性です。

解説(使用例)

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画像です。

GetAttr_Sample01 True の場合のメッセージ

標準ファイルではなかった場合、次のようにファイルの属性を調べて表示します。

GetAttr_Sample01 False の場合に表示されるメッセージ

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

指定フォルダ内のファイルやサブフォルダの属性を調べて次のように表示します。

GetAttr_Sample02 フォルダ内の検索結果を属性付きで表示

・フォルダ内に存在するファイルやサブフォルダを Dir 関数で一つづつ発見していきます。

・見つかった Dir 関数の戻り値を一つ目のサンプル同様に GetAttr 関数の戻り値から属性を解析しています。

おわりに

Excel VBA の GetAttr 関数は、指定したファイルやフォルダの属性を示す整数を返します。複数の属性を持っている場合に返される値は属性を示す定数(値)の組み合わせです。

ファイルやフォルダの属性を確認することで、ファイルやフォルダに対する適切な処理を行うことができます。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!