GetAttr関数

GetAttr 関数はファイルまたはフォルダの属性を整数 (Integer型) で返します。この戻り値とファイル属性を表す定数を And でビット演算を行うと属性の有無がわかります。

スポンサーリンク

GetAttr関数の使用方法

構文
GetAttr(PathName)

【戻り値】 整数型 (Integer)
引数名 省略 説明
PathName × ファイル名を表す文字列式を指定します。 フォルダ名およびドライブ名も含めて指定できます。
ファイル属性を表す定数
定数 説明
vbNormal 0 標準ファイル(既定値)
vbReadOnly 1 読み取り専用ファイル
vbHidden 2 隠しファイル
vbSystem 4 システム ファイル※Windowsのみ
vbVolume 8 ボリューム ラベル※Windowsのみ
vbDirectory 16 フォルダ
vbArchive 32 アーカイブ ※Windowsのみ
vbAlias 64 エイリアス ファイル※Macintoshのみ

GetAttr関数の使用例

前ページのサンプル『Dir関数によりファイル・サブフォルダの一覧を取得する 』に手を加えて、ファイルとフォルダを区別できるようにしました。GetAttr の戻り値とフォルダの属性である vbDirectory を And でビット演算し、ゼロでなければフォルダになります。

Sub sample_ef072_01()
    Dim myFile      As String
    Dim strRtn      As String

    myFile = "C:¥Users¥Public¥vba¥"

    '初回検索
    strRtn = Dir(myFile, vbReadOnly + vbHidden + vbDirectory)

    Do Until strRtn = ""
        Select Case strRtn
        Case ".", ".."
            'カレントフォルダと親フォルダの場合は出力しない。
        Case Else
            If (GetAttr(myFile & strRtn) And vbDirectory) > 0 Then
                strRtn = strRtn & " [フォルダ]"
            Else
                strRtn = strRtn & " [ファイル]"
            End If

            Debug.Print "Dir関数戻り値:" & strRtn
        End Select

        '2回目以降は引数を省略してDir関数を使用
        strRtn = Dir
    Loop
End Sub

 Dir関数  Do…Loop Select Case による複数の条件分岐

テスト用フォルダ『C:¥Users¥Public¥vba』は下図のようになっています。

サンプルファイル・フォルダ
サンプルファイル・フォルダ
  • マクロ実行結果(イミディエイトウィンドウ
    Dir関数戻り値:AAA.xlsx [ファイル]
    Dir関数戻り値:folder1 [フォルダ]
    Dir関数戻り値:folder2 [フォルダ]
    Dir関数戻り値:test1.xlsx [ファイル]
    Dir関数戻り値:test2.txt [ファイル]

 ファイルシステムオブジェクトを利用したファイルおよびフォルダ操作

タイトルとURLをコピーしました