アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります

今、GetAttr関数を使ってファイル名とフォルダ名を取得したいのですが
ファイル名が上手く取れません
そこで下記のテストを作ってみたところ、getAttrの返り値がvbNormalにならずに
vbArchive=32になっています

Sub test()

moji = "d:\*.*"
tmp = Dir(moji, vbNormal)

Do While tmp <> ""
GAvalue = GetAttr("d:\" & tmp)
Debug.Print tmp, GAvalue

tmp = Dir()
Loop

End Sub

Dir関数ではファイルを持ってきてくれるのですが
どうしてGetAttr関数の返り値はvbArchive=32になってしまうのか教えてください

以上よろしくお願い致します

A 回答 (2件)

こんにちは



GetAttr関数の返り値は属性の合計値なので、
 32= vbArchive(32) + vbNormal(0)
ということでしょう。

アーカイブ属性を外せば、返り値は「0」になります。
https://www.accessdbstudy.net/entry/20100827/p1# …
    • good
    • 0
この回答へのお礼

早速ご回答、ありがとうございます
了解しました

これからもよろしくお願い申し上げます

お礼日時:2022/12/22 19:02

Microsoft - Office VBA リファレンス - GetAttr 関数


https://learn.microsoft.com/ja-jp/office/vba/lan …

| GetAttr では、次の属性の値の合計が返されます。

なので、

> getAttrの返り値がvbNormalにならずに
> vbArchive=32になっています

GetAttrの返り値が32なら、
vbNormal(0)相当の値が0なので、標準
vbReadOnly(1)相当の値が0なので、読み取り専用でない
vbHidden(2)相当の値が0なので、非表示でない
vbSystem(4)相当の値が0なので、システムファイルでない
vbDirectory(16)相当の値が0なので、ディレクトリまたはフォルダーでない
vbArchive(32)相当の値が1なので、前回のバックアップ以降にファイルが変更されている
って意味になります。

というか、仕様上vbNormalって意味無いような。
標準でないファイルって、あり得ない?

対象ファイルの属性チェックするなら、

Debug.Print tmp&"が読み取り専用", GAvalue And vbNormal
Debug.Print tmp&"が非表示", GAvalue And vbReadOnly
Debug.Print tmp&"がシステムファイル", GAvalue And vbSystem

とかってやったり。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます
属性のチェック、これからの仕事の参考に
させていただきます

ありがとうございました

お礼日時:2022/12/22 19:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A