VBA ファイルやフォルダーの属性を調べるGetattr関数 設定するSetattrステートメント

スポンサーリンク

GetAttr【ゲットアトリビュート】関数

読み取り専用ファイルや隠しファイルといったファイルの属性を調べるには、GetAttr【ゲットアトリビュート】関数を使用します。指定されたファイルやフォルダーの属性をVbFileAttribute【ビイビーアトリビュート】列挙型の定数で返します。戻り値はファイルの属性を表す整数値です。複数の属性が設定されている場合は値の合計値が返されます。

VbFileAttribute列挙型の定数
定数 内容
vbNormal
【ノーマル】
0 標準ファイル
vbReadOnly
【リードオンリー】
1 読み取り専用
編集はできますが編集後の上書き保存ができません。
閲覧するファイルで内容を変更してほしくない場合に
使用するモードです。
編集したは場合は、コピーを保存する
ことになります。
vbHidden
【ヒドゥン】
2 隠しファイル
不可視ファイルのことでユーザーに
間違って削除されたりしないように
通常のファイル一覧に表示しないように
するモードです。
vbSystem
【システム】
4 システムファイル
システムの起動や運用に必須の重要なファイルを
保護するために使われる属性です。
読み取り専用属性と同じく
書き換えや削除ができません。
(Macintosh不可)
vbDirectory
【デレクトリー】
16 フォルダ
vbArchive
【アーカイブ】
32 アーカイブ
バックアップソフトのチェック用です。
アーカイブフラグ対応のバックアップソフトを
使用してファイルをバックアップすると
バックアップされたファイルのアーカイブは
OFFになります。
その後、ファイルの変更等がされると
自動的にONになります
次にバックアップする時には
アーカイブがONのファイルだけを
バックアップすることで
容量や時間を節約します。
(Macintosh不可)
vbAlias
【エイリアス】
64 エイリアス ファイル
リンクまたはショートカット
(Macintoshのみ)

GetAttr【ゲットアトリビュート】関数の書式と設定値(引数)の説明

GetAttr(PathName)
【戻り値】 整数型 (Integer)

  • PathName【パスネーム】(必須)
    属性を調べたいファイルまたはフォルダー名を指定します。パス名を含めて指定できます。ファイルまたは属性名のみ指定した場合はカレントフォルダーのファイルまたはフォルダーが操作対象になります。指定したファイルまたはフォルダーが存在しない場合はエラーになります。

指定したファイルまたは属性の値を取得するコードと解説

Sub 属性()
Dim ファイル名 As String
Dim ファイル名2 As String
On Error GoTo エラー処理
ファイル名 = InputBox("属性を調べたい" & vbCrLf & "ファイル名またはファルダー名を入力してください。")
ファイル名2 = ThisWorkbook.Path & "¥" & ファイル名
MsgBox "属性値は" & GetAttr(ファイル名2) & "です。"
Exit Sub
エラー処理:
MsgBox "ファイルが見つかりません。"
End Sub
InputBox【インプット】関数を利用してユーザーからファイルまたはフォルダー名を入力してもらい。変数ファイル名に格納します。ファイルの場合は拡張子が必要です。thisWorkbook.Pathでこのマクロが記述されているパスの変数ファイル名を変数ファイル名2に格納します。
GetAttr【ゲットアトリビュート】関数で変数ファイル名2のファイルまたはフォルダーの属性を取得してMsgBox【メッセージボックス】関数で表示します。このとき、変数ファイル名2に格納されている
ファイルやフォルダーが存在しない場合エラーが発生するのでOn Errar【オンエラー】ステートメントでエラー処理をします。

実行結果



SetAttr【セットアトリビュート】ステートメント

ファイルやフォルダーの属性を設定するにはSetAttr【セットアトリビュート】ステートメントを使用します。複数のファイルやフォルダーに対して属性をまとめて設定する場合などに便利に使用できます。

SetAttr【セットアトリビュート】ステートメントの書式と設定値の説明

SetAttr(PathName,Attributes)

  • PathName【パスネーム】(必須)
    属性を設定したいファイル名をパスを含めて指定します。ファイル名のみ指定した場合はカレントフォルダーのファイルが操作対象のなります。
  • Attributes【アトリビュートス】(必須)
    設定する属性値を上記のVbFileAttribute列挙型の定数を使用して指定します。複数の設定を同時に設定する場合は設定したい定数を「+」演算子で連結して設定する、もしくは定数の値の合計値を設定します。例えば、読み取り専用ファイルと隠しファイルの属性を同時に設定したい場合は、「vbReadOnly+vbHidden」または3」を指定します。

このパスにある「Book1.xlsx」ファイルの属性を読み取り専用に設定するコード例

Sub 属性変更()
On Error GoTo エラー処理
SetAttr pathname:=ThisWorkbook.Path & "\Book1.xlsm" _
, Attributes:=vbReadOnly
MsgBox "属性を変更しました。"
Exit Sub
エラー処理:
MsgBox "指定のファイルが開いているか見つかりません。"
End Sub

※開いているファイルや存在しないファイルを指定するとエラーになります。


以上で、Getattr【ゲットアトリビュート】関数、Setattr【セットアトリビュート】ステートメントについての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告