ファイルの属性を設定する
元の属性を残したまま、指定ファイルへ読み取り専用属性を追加します。
実行前に確認
- 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図で見るファイルの変化
イメージ図概念図:同じファイルに読み取り専用属性を加えます。
変更前
C:\Data\sample.txt 元の属性を取得
手動:承認
対象パスを確認して[はい]
マクロ:属性追加
元の属性 Or vbReadOnlyを設定
変更後
C:\Data\sample.txt 読み取り専用がオン、他の属性は保持
未存在・[いいえ]なら変更なし。アクセス権の変更ではなく、編集・上書き保存へ影響する属性です。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
練習用ファイルを閉じ、filePathをその絶対パスへ変更します。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。 確認画面のパスが正しければ[はい]を押します。
- 4
エクスプローラーのプロパティで読み取り専用がオンになったことを確認します。それ以外の元の属性は残ります。