• 締切済み

VBでファイルの数を調べる

VB初心者です。 ものすごく簡単な質問かもしれないのですが・・・ VB6で、例えばCドライブにある全てのファイルの数を調べるにはどうすればいいのでしょうか?ルートにあるファイルの数ではなく、ドライブにある全てのファイルの数です。DOSで「DIR /S」ってすると、全てのファイルの数がわかりますよね?そんな感じで。隠し属性やシステム属性のファイルも全てです。 わかりにくい説明で申し訳ないのですが、よろしくお願いします。

みんなの回答

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

適当なAPI関数が見つからなかったので、私は自分で関数を作りました。 checkNameに入れるDir関数の第2引数の定数で、ファイルの属性を指定できます。 下の例では、通常ファイル、システムファイル、隠しファイル、読取専用ファイルをすべて配列に格納します。 では。 'FolderName内の全ファイル名(フルパス)をallFile()に格納して、ファイル数を返す Public Function FileArray(FolderName As String, allFile() As String) As Long Dim setPath As String '現在のパス Dim checkName As String '調べるファイル(フォルダ) Dim checkFlag As Boolean '繰り返しの終了判定 Dim pathCount As Long '処理するパスの個数 Dim pathList() As String 'パス名のリスト Dim fc As Long 'ファイル数 If (GetAttr(FolderName) And vbDirectory) <> 0 Then If Right(FolderName, 1) <> "\" Then FolderName = FolderName & "\" End If fc = 0 pathCount = 0 setPath = FolderName checkFlag = True Do While checkFlag = True checkName = Dir(setPath & "*.*", vbNormal + vbSystem + vbReadOnly + vbHidden + vbDirectory) Do While checkName <> "" If checkName <> "." And checkName <> ".." Then If (GetAttr(setPath & checkName) And vbDirectory) <> 0 Then pathCount = pathCount + 1 ReDim Preserve pathList(pathCount) pathList(pathCount) = setPath & checkName Else ReDim Preserve allFile(fc) allFile(fc) = setPath & checkName fc = fc + 1 End If End If checkName = Dir() Loop If pathCount = 0 Then checkFlag = False Else setPath = pathList(pathCount) & "\" pathCount = pathCount - 1 End If Loop If fc = 0 Then ReDim allFile(fc) allFile(fc) = "" End If FileArray = fc Else FileArray = 1 End If End Function

cakemama
質問者

お礼

素早い回答、本当にありがとうございました。 困っていたので感激したのですが・・・。ごめんなさい。初心者の私には理解できませんでした。コピーして最低限の部分だけ修正したのですが、うまく動きませんでした。。。(T-T)考えに考えた末、なんとか自分で作成することができました(新たな問題が出てきて、結局完成してないんですが。(T-T)(T-T)(T-T))。 せっかく回答していただいたのに、申し訳ないです。。。もっと勉強しますね。

関連するQ&A