OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

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

  • すぐに回答を!
  • 質問No.141665
  • 閲覧数622
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 93% (45/48)

VB初心者です。
ものすごく簡単な質問かもしれないのですが・・・

VB6で、例えばCドライブにある全てのファイルの数を調べるにはどうすればいいのでしょうか?ルートにあるファイルの数ではなく、ドライブにある全てのファイルの数です。DOSで「DIR /S」ってすると、全てのファイルの数がわかりますよね?そんな感じで。隠し属性やシステム属性のファイルも全てです。

わかりにくい説明で申し訳ないのですが、よろしくお願いします。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 51% (1179/2272)

適当なAPI関数が見つからなかったので、私は自分で関数を作りました。 checkNameに入れるDir関数の第2引数の定数で、ファイルの属性を指定できます。 下の例では、通常ファイル、システムファイル、隠しファイル、読取専用ファイルをすべて配列に格納します。 では。 'FolderName内の全ファイル名(フルパス)をallFile()に格納して、ファイル数を返す Publ ...続きを読む
適当な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

お礼率 93% (45/48)

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

このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ