プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります

今、DiSK整理のためのプログラムを開発中なのですが
ファイルとフォルダの区別の際、DiR関数を下記のように使ったのですが

'...ファイル検索
  moji = Path & "\*.*"
tmp = Dir(moji, vbNormal)
    ・
'...フォルダ検索
  moji = Path & "\*"
tmp = Dir(moji, vbDirectory)

vbNormalの場合はファイルだけを持って来てくれるのですが
vbDirectoryはファイル、フォルダ、それ以外のすべてを持ってきます
ちょっと不思議に感じています

サブフォルダだけ抜き出してくれる方法は別に有るのでしょうか?
またはファイルとフォルダ、その他と区別できる方法が有れば良いのですが

もしお分かりになりましたら教えてください
以上、よろしくお願いいたします

A 回答 (4件)

No1の方のようにするのが良いかと思いますが、


どうしても、dir関数を使用したい場合は、以下のようにしてください。
以下は、指定フォルダ内の全てのフォルダのみを表示するサンプルです。
Public Sub Dir試験()
Dim path As String
Dim tmp As String
Dim moji As String
path = "d:\goo\excel\goo367"
moji = path & "\*"
tmp = Dir(moji, vbDirectory)
Do While tmp <> ""
If tmp <> "." And tmp <> ".." And GetAttr(path & "\" & tmp) = vbDirectory Then
MsgBox (tmp)
End If
tmp = Dir()
Loop
End Sub
---------------------------------------
pathについてはあなたの環境にあわせてください。
vbDirectoryを指定したにも関わらず、なぜ、ファイルも取得できてしまうのか
その理由については、下記サイトに詳細に書かれています。
http://officetanaka.net/excel/vba/tips/tips95.htm

私が提示したサンプルも上記サイトを参考にしています。
    • good
    • 0
この回答へのお礼

いつもお世話になります
大切なお時間を割いて例題を作っていただき心から感謝しています
例題に基づきプログラムを作成させていただきました
本当にありがとうございました

お礼日時:2018/05/14 11:29

残念ながらvbdirectryはフォルダだけを選んでくれません。

同名のファイルを排除出来ないのです。下記URLでは、attributeを併用してヒットしたものがファイルかフォルダか区別させてます。

https://msdn.microsoft.com/ja-jp/library/dd31395 …
    • good
    • 0
この回答へのお礼

いつもお世話になります
参考になるURLをご紹介いただきありがとうございます
今後のプログラム開発には欠かせない大切な資料ですね
今後ともよろしくお願い申し上げます

お礼日時:2018/05/14 11:26

ここで質問するより自分で探した方が早いと思いますが…



http://officetanaka.net/excel/vba/tips/tips95.htm
https://msdn.microsoft.com/ja-jp/vba/language-re …
    • good
    • 0
この回答へのお礼

いつもありがとうございます
いろいろ探したのですが、attributeは初めてなのでヒットしませんでした
ありがとうございました
今後ともよろしくお願いいたします

お礼日時:2018/05/14 11:33

FileSystemObjectオブジェクトを使う方が明確に分かれてると思いますよ。



http://officetanaka.net/excel/vba/filesystemobje …
    • good
    • 0
この回答へのお礼

いつもお世話になります
URLのご紹介ありがとうございます
OfficeTANAKAさんの資料はよく参考にさせて頂いています
分かり易くて良いですよね
また、いろいろ教えてくださいね
ありがとうございました

お礼日時:2018/05/14 11:38

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