✅ 基本構文
GetAttr(pathname)
pathname
:属性を取得したいファイルまたはフォルダーのフルパス(文字列)
戻り値:整数(属性を表す定数の組み合わせ)
🔢 戻り値として返る属性の定数
定数名 | 値 | 説明 |
---|---|---|
vbNormal | 0 | 通常のファイル(属性なし) |
vbReadOnly | 1 | 読み取り専用 |
vbHidden | 2 | 隠しファイル |
vbSystem | 4 | システムファイル |
vbDirectory | 16 | フォルダー |
vbArchive | 32 | アーカイブファイル |
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 など |
注意点 | パスの存在確認・ドライブ権限のエラー対策が必要 |