VBA ファイルやフォルダーの属性情報取得(GetAttr)

✅ 基本構文

GetAttr(pathname)
  • pathname:属性を取得したいファイルまたはフォルダーのフルパス(文字列)

戻り値:整数(属性を表す定数の組み合わせ)


🔢 戻り値として返る属性の定数

定数名説明
vbNormal0通常のファイル(属性なし)
vbReadOnly1読み取り専用
vbHidden2隠しファイル
vbSystem4システムファイル
vbDirectory16フォルダー
vbArchive32アーカイブファイル
vbAlias(非推奨)64別名(Windows では一般的でない)

これらはビットフラグとして組み合わされ、戻り値の整数を And 演算でチェックします。


🧪 使用例(基本)

Dim attr As Integer
attr = GetAttr("C:\test\sample.txt")

If (attr And vbReadOnly) = vbReadOnly Then
MsgBox "このファイルは読み取り専用です。"
End If

If (attr And vbHidden) = vbHidden Then
MsgBox "このファイルは隠しファイルです。"
End If

📁 フォルダーの属性を調べる

Dim attr As Integer
attr = GetAttr("C:\test")

If (attr And vbDirectory) = vbDirectory Then
MsgBox "これはフォルダーです。"
End If

🎛 属性の組み合わせを検出

Dim attr As Integer
attr = GetAttr("C:\test\data.txt")

Select Case attr
Case vbNormal
MsgBox "通常のファイルです。"
Case vbReadOnly + vbHidden
MsgBox "読み取り専用かつ隠しファイルです。"
Case Else
MsgBox "複数の属性を持っています(値: " & attr & ")"
End Select

🔄 属性の変更:SetAttr 関数との併用

属性を取得するのが GetAttr、属性を変更するのが SetAttr です。

属性を読み取り専用に変更

SetAttr "C:\test\data.txt", vbReadOnly

属性を複数設定(例:読み取り専用+隠し)

SetAttr "C:\test\data.txt", vbReadOnly + vbHidden

属性を変更したら、GetAttr で再確認できます。


🚫 エラーと対策

原因エラー内容対処方法
パスが存在しない“ファイルが見つかりません”Dir() で事前に存在確認
アクセス権限がない“パスが無効です” などファイルの所有者やセキュリティを確認
フォルダとファイルを間違える属性に vbDirectory が含まれるIf (attr And vbDirectory) = vbDirectory で判断

テンプレート

Dim path As String
Dim attr As Integer

path = "C:\test\sample.txt"

If Dir(path) <> "" Then
attr = GetAttr(path)
If (attr And vbReadOnly) = vbReadOnly Then
MsgBox "読み取り専用です。"
End If
Else
MsgBox "ファイルが存在しません。"
End If

🧠 実務での活用例

シナリオ使用法例
ファイル削除前の保護確認読み取り専用かどうかを GetAttr で確認
自動処理対象から隠しファイル除外vbHidden をチェック
フォルダーかファイルか判断vbDirectory を使って処理を分岐
属性変更時の前状態記録元の属性を GetAttr で保存して後で復元

🧾 まとめ

項目説明
関数名GetAttr(pathname)
戻り値ファイルやフォルダーの属性(整数)
属性の確認方法If (attr And vbReadOnly) = vbReadOnly Then のように使う
主な属性vbReadOnly, vbHidden, vbSystem, vbDirectory など
注意点パスの存在確認・ドライブ権限のエラー対策が必要
タイトルとURLをコピーしました