概要

SetAttr関数は、VBAでファイルやフォルダの属性を設定または変更するために使用される関数です。この関数を使用することで、ファイルを読み取り専用にしたり、隠しファイルに設定したりといった操作が簡単に行えます。業務でのファイル管理や自動化のシナリオで非常に役立つ機能です。

構文

SetAttr pathname, attributes

パラメータ

  • pathname

    属性を変更する対象のファイルやフォルダのパスを指定します。このパスはフルパスまたは相対パスで指定できます。

  • attributes

    設定する属性を指定します。以下の定数を使用して属性を設定します:

    • vbNormal:通常のファイル(属性をクリア)

    • vbReadOnly:読み取り専用

    • vbHidden:隠しファイル

    • vbSystem:システムファイル

    • vbArchive:アーカイブ

複数の属性を組み合わせる場合は、加算して指定します(例:vbReadOnly + vbHidden)。

使用例

基本的な使用例 - ファイルを読み取り専用に設定する

Sub SetFileAsReadOnly()
    Dim filePath As String

    filePath = "C:\Example\sample.txt"

    ' ファイルを読み取り専用に設定
    SetAttr filePath, vbReadOnly
    MsgBox "ファイルを読み取り専用に設定しました。"
End Sub

この例では、指定したファイルを読み取り専用に設定します。既存のファイル属性にかかわらず、vbReadOnly属性を付与します。

ファイルを隠しファイルに設定する

Sub SetFileAsHidden()
    Dim filePath As String
    filePath = "C:\Example\sample.txt"

    ' ファイルを隠しファイルに設定
    SetAttr filePath, vbHidden
    MsgBox "ファイルを隠しファイルに設定しました。"
End Sub

この例では、指定したファイルを隠しファイルに設定します。隠しファイルにすることで、エクスプローラーでの表示がデフォルトでは非表示となります。

属性を複数設定する - 読み取り専用かつ隠しファイルに設定

Sub SetFileAsReadOnlyAndHidden()
    Dim filePath As String
    filePath = "C:\Example\sample.txt"

    ' ファイルを読み取り専用かつ隠しファイルに設定
    SetAttr filePath, vbReadOnly + vbHidden
    MsgBox "ファイルを読み取り専用かつ隠しファイルに設定しました。"
End Sub

この例では、vbReadOnlyvbHiddenを組み合わせることで、ファイルを読み取り専用かつ隠しファイルとして設定しています。

エラーハンドリングの重要性

SetAttr関数を使用する際、指定したファイルが存在しない場合や、アクセス権限がない場合はエラーが発生します。そのため、事前にファイルの存在を確認するか、エラーハンドリングを行うことが推奨されます。

エラーハンドリング付きの例

Sub SafeSetAttr()
    Dim filePath As String
    filePath = "C:\Example\sample.txt"

    On Error GoTo ErrorHandler
    SetAttr filePath, vbReadOnly
    MsgBox "ファイル属性を設定しました。"
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました。ファイルが存在するか、アクセス権限を確認してください。"
End Sub

このコードでは、On Error GoToを使用して、エラー発生時に適切なメッセージを表示するようにしています。

まとめ

SetAttr関数は、VBAでファイルやフォルダの属性を簡単に操作できる便利な関数です。ファイル管理の自動化や、特定のファイルをユーザーから隠したい場合など、さまざまな用途で活用できます。使用時には、ファイルの存在確認や適切なエラーハンドリングを行うことで、より安全に操作できます。