#759 ファイルが読み取り専用かどうか調べるには? VBA

「GetAttr」関数を使うことで、ディスク上のファイルの属性が”読み取り専用かどうか”を調べることができます。

  • この関数では、引数としてそれを調べたいファイルのパスを指定します。

  • 返り値は単独の値ではなく、複数の属性がまとめて格納されたビット値になっています。そのため、「And」演算子を使ってビット単位で比較を行います。読み取り専用かどうか調べるには「GetAttr(パス) And vbReadOnly」のような式で調べることになります。演算結果が「0」でなければ読み取り専用です。

  • その際のコードにおいては、「(GetAttr(strFile) And vbReadOnly) 」のように前後をカッコで囲んだものに対して「<> 0」という比較を行うよう注意します。

使用例:

Dim strFile As String

'対象ファイルのフルパス
strFile = "C:\テスト\エクセルデータ.xlsx"

'属性を取得してReadOnlyかどうか調べる
If (GetAttr(strFile) And vbReadOnly) <> 0 Then
  '読み取り専用のとき
  MsgBox strFile & "は読み取り専用です!"
Else
  MsgBox strFile & "は読み取り専用ではありません!"
End If


※GetAttr関数はファイルの”属性”を調べるもので、書き込み可能かどうかを調べるものではありません。同じファイルを複数のアプリケーションで開いたとき、あとから開いたものでは上書き禁止状態になることがありますが、元々読み取り専用でないファイルがすでに開かれていたとしてもGetAttr関数の返り値は読み取り専用とはなりません。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved