← コード一覧へ戻る
実務ファイル

ファイルの属性を設定する

元の属性を残したまま、指定ファイルへ読み取り専用属性を追加します。

実行前に確認

  • Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
  • 編集・上書き保存に影響します。戻す場合はエクスプローラーのプロパティで読み取り専用をオフにします。アクセス権を付け替える処理ではありません。

1サンプルコード

Sub Example4010()
    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)
    If MsgBox(filePath & vbCrLf & "読み取り専用にしますか?", _
        vbYesNo + vbQuestion + vbDefaultButton2) <> vbYes Then Exit Sub
    SetAttr filePath, attributes Or vbReadOnly
    MsgBox "読み取り専用にしました"
    Exit Sub
Failed:
    MsgBox "処理を中止しました: " & Err.Description
End Sub

図で見るファイルの変化

イメージ図

概念図:同じファイルに読み取り専用属性を加えます。

  1. 変更前

    C:\Data\sample.txt 元の属性を取得

  2. 手動:承認

    対象パスを確認して[はい]

  3. マクロ:属性追加

    元の属性 Or vbReadOnlyを設定

  4. 変更後

    C:\Data\sample.txt 読み取り専用がオン、他の属性は保持

未存在・[いいえ]なら変更なし。アクセス権の変更ではなく、編集・上書き保存へ影響する属性です。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    練習用ファイルを閉じ、filePathをその絶対パスへ変更します。

  3. 3

    実行するSubの内側にカーソルを置き、F5キーを押します。 確認画面のパスが正しければ[はい]を押します。

  4. 4

    エクスプローラーのプロパティで読み取り専用がオンになったことを確認します。それ以外の元の属性は残ります。

使っている機能の公式ドキュメント(Microsoft Learn)