FSO ファイル・フォルダの属性

このコードは、FileSystemObject (FSO) を使用してフォルダおよびファイルの属性を取得し、それに基づいて操作を行う方法を示しています。

' FSO ファイル・フォルダの属性
Private Sub FSO_File_Folder_Attributes()
    ' 参照設定「Microsoft Scripting Runtime」必要
    With New FileSystemObject
        ' フォルダやファイルの属性を格納する変数を宣言します
        Dim myAttributes As Long
        
        ' フォルダやファイルのパスを指定します
        Dim myPath As String
        myPath = "C:\TEMP"
        
        ' GetFolder メソッドを使用してフォルダの属性を取得します
        With .GetFolder(myPath)
            ' フォルダ名と属性を表示します
            Debug.Print .Name, .Attributes
            
            ' フォルダであるかどうかを判定して表示します
            If .Attributes And Directory Then
                Debug.Print "フォルダです"
            Else
                Debug.Print "フォルダではありません"
            End If
        End With
        
        ' GetFile メソッドを使用してファイルの属性を取得します
        With .GetFile(myPath & "\fuga.txt")
            ' ファイル名と属性を表示します
            Debug.Print .Name, .Attributes
            
            ' 読み取り専用属性を切り替えます
            If .Attributes And ReadOnly Then
                Debug.Print "読み取り専用ですので解除します"
                .Attributes = .Attributes Xor ReadOnly
            Else
                Debug.Print "読み取り専用ではありませんので設定します"
                .Attributes = .Attributes Or ReadOnly
            End If
        End With
    End With
End Sub

コードの概要

このサブプロシージャ FSO_File_Folder_Attributes は、FSO を使用して特定のフォルダおよびファイルの属性を取得し、それを表示および変更する例を示しています。

コードの詳細

  1. FileSystemObject の作成:With New FileSystemObject
    ここで FileSystemObject のインスタンスを作成しています。このオブジェクトを使用してファイルシステムにアクセスします。
  2. フォルダやファイルのパスを指定:Dim myPath As String myPath = "C:\TEMP"
    操作対象のフォルダまたはファイルのパスを指定します。
  3. フォルダの属性を取得および表示:With .GetFolder(myPath)
    Debug.Print .Name, .Attributes
    GetFolder メソッドを使用して指定したフォルダ (C:\TEMP) を取得し、その名前と属性を表示します。
  4. フォルダの属性を判定:If .Attributes And Directory Then
    Debug.Print "フォルダです"
    Else
    Debug.Print "フォルダではありません"
    End If
    フォルダが実際にフォルダであるかどうかを判定します。Attributes And Directory は、フォルダ属性が設定されているかをチェックしています。
  5. ファイルの属性を取得および表示:With .GetFile(myPath & "\fuga.txt")
    Debug.Print .Name, .Attributes
    GetFile メソッドを使用して特定のファイル (C:\TEMP\fuga.txt) を取得し、その名前と属性を表示します。
  6. 読み取り専用属性の切り替え:If .Attributes And ReadOnly Then
    Debug.Print "読み取り専用ですので解除します"
    .Attributes = .Attributes Xor ReadOnly
    Else
    Debug.Print "読み取り専用ではありませんので設定します"
    .Attributes = .Attributes Or ReadOnly
    End If
    ファイルが読み取り専用であるかをチェックし、読み取り専用の場合は属性を解除し、読み取り専用でない場合は属性を設定します。

属性の詳細

  • 標準ファイル: 0
  • 読み取り専用ファイル: 1
  • 隠しファイル: 2
  • システムファイル: 4
  • ディレクトリ: 16
  • アーカイブ可能: 32
  • リンクまたはショートカット: 1024
  • 圧縮ファイル: 2048

コード全体の動作まとめ

  • FileSystemObject を使用して、指定されたフォルダおよびファイルの属性を取得します。
  • フォルダの属性を判定し、フォルダであるかどうかを表示します。
  • ファイルの属性を表示し、読み取り専用属性の有無をチェックして、それに応じて属性を切り替えます。

このコードにより、ファイルやフォルダの属性を取得して表示し、特定の属性を変更する方法が示されています。これにより、ファイルシステムの管理やファイル属性の制御が容易になります。

Follow me!