ファイルの属性を調べる
指定ファイルの属性を取得し、読み取り専用・隠し・システム属性の有無を表示します。
実行前に確認
- Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
- 属性は複数同時に付くため、= vbReadOnlyという完全一致比較ではなくAndでビットを調べます。
1サンプルコード
Sub Example4009()
On Error GoTo Failed
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim filePath As String
filePath = "C:\Data\sample.txt"
If Not fso.FileExists(filePath) Then
MsgBox "ファイルがありません: " & filePath
Exit Sub
End If
Dim attributes As Long
attributes = GetAttr(filePath)
MsgBox "読み取り専用: " & CStr((attributes And vbReadOnly) <> 0) & vbCrLf & _
"隠し: " & CStr((attributes And vbHidden) <> 0) & vbCrLf & _
"システム: " & CStr((attributes And vbSystem) <> 0)
Exit Sub
Failed:
MsgBox "処理を中止しました: " & Err.Description
End Sub図で見る操作の流れ
イメージ図コードの動きを表した概念図です。実際のExcel画面ではありません。
対象:ファイル
C:\Data\sample.txt
マクロ:属性を取得
GetAttrの結果をAndで属性ごとに調べる
結果:3属性を表示
読み取り専用・隠し・システムをそれぞれTrue/Falseで表示する
ファイルがなければ終了します。複数の属性が同時にTrueでも正常です。属性の変更は行いません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
filePathを調べるファイルへ変更します。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。
- 4
Trueはその属性あり、Falseはなしを表します。確認するだけで属性は変えません。