• 締切済み

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

  • VB2005 FTPでファイルアップロード

    はじめまして。VB初心者なのですが質問があります。 VB2005でFTPでtxtファイルをアップロードをしたいです。 具体的にはCドライブに入れてある C\test1.txtをレンタルホームページのFTPサーバーにアップロードしたいです。 .NETでのアップロードの仕方はインターネットに情報が割とあるのですが、VB2005だとなかなか出てきません。 どのようなコードを書けばいいのでしょうか?よろしくお願いします。

  • DOSコマンドのattribで属性が変わらない

    ウイルスに感染したファイルをDOSコマンドのattribで属性変更して削除するbatファイルを作りたいのですが、attribで-hで隠し属性を外そうとすると「システムファイルは再設定できません」とでて-sでシステム属性を外そうとすると「隠しファイルは再設定できません」と表示され変更できません。 どうすればうまく属性変更できるでしょうか。ちなみにdelで削除はできませんでした。 すいません、初心者ですのでお教えいただけないでしょうか。

  • ファイルの検索方法

    ACCESS初心者で困っています↓ Cドライブの直下、またはDドライブの直下にXXXX.mdbというファイルがある場合に限り処理をするプログラムを作っていたんですが、ユーザーによっては保存先が違う場合があるので、すべてのドライブから対象のXXXX.mdbというファイルがあるか検索したいのですが、検索方法がわかりません。Dir("フルパス")で探していたのですが、フォルダ内だけのようなので検索できませんでした。 申し訳ありませんがご教授願います。

  • フォルダのファイル数をvbaで取得したい

    vbaなのですが、フォルダにgifファイルがたくさんはいっていますが、 その数を数えるコードを教えてください。 今は、 Sub Macro7() Dim File As String Dim i As Long File = Dir("C:\*.*", vbDirectory) Do While File <> "" File = Dir i = i + 1 Loop MsgBox "ファイル数は" & i & "です" End Sub のように、全てのファイル数をカウントして求めています。

  • SqlServerにファイルを保存(VB.NET)

    お世話になっております。 VB.NETからSqlServerのFILESTREAM 属性を持ったvarbinary(max)の列にファイルを保存したいのですが、やりかたがよく分かりません。 文字列でSQL文を作成して、そのSQL文を実行するのはわかるんですが、ファイルを保存となると何をどうしたらいいのか・・・ 参考になるサイト等あれば教えてください。 ちなみに申し訳ないのですが、C#で書いてあるところはありましたがC#のソースは読めないので、できればVBが良いです。 <環境> Sql Server 2008 R2 Express VB.NET .NET Framework3.5 SP1 クライアント/サーバー型システム

  • DOSのコマンドで、隠しファイルをcopyまたはrenameする方法

    OSは、Windows98SEです。 隠しファイルの属性のついたファイルをいじる前に、それをバックアップしたいとします。 しかし、隠しファイルをDOSプロンプトでcopyをしようとしても、 「ファイルが見つかりません」と文句を言ってきます。 (renameの場合も同様に文句を言ってきます。) dir /A:H で表示はできるし、エクスプローラでは見えるので、無いわけはないのです。 エクスプローラでコピーしたり元に戻したりできれば全くかまわないのですが、 もしそういうファイルを下手にいじってしまって起動できなくなってしまって 起動フロッピーで起動するときには、 DOSのコマンドでバックアップから元に戻したりすることになると思います。 DOSのコマンドで、隠しファイルをcopyしたりrenameするにはどうすればよいのでしょうか。 それとも、そういう場合は、あらかじめ、隠しファイル属性をはずしておくべきなのでしょうか。 私は DOSのコマンドは、cd, dir, copy, rename くらいしか知りません。(それらも、自信なし。) よろしくお願いいたします。 (この質問は、約1週間のあいだ 回答がないと、締め切ります。)

  • VBS(WSH)でディレクトリの場所を取得する方法

    DOSコマンドで下記のようにすると、"temp"というフォルダがCドライブ内のどこに存在するか確認できますが、VBSで同様の結果を取得する方法がわかりません。 C:\> dir temp /s 申し訳ありませんが、分かるかたがいましたらお願いします。

  • CとVBとdosの違いについて

     知り合いに「CとVBとdosの違いは何?」と聞かれて納得できる説明が出来なくて困っています。  分かりやすく説明する方法を教えてください。

  • FTPで一覧リストを作成し取得(Get)したい

    VBで、FTPサーバに接続し、指定のディレクトリーからいくつかのファイルをダウンロードしています。ダウンロードするファイル数が沢山あり、出来る事なら、そのディレクトリー内のファイル名の一覧リストがほしいのです。DOSコマンドから見るときは、'ls'や'dir'は使えるのですが、一覧の作成ができません。DOSプロンプトからFTPサーバをOPENし、dir > aaa.txt と入力すると自端末のC:\document and Settings\自分のフォルダー配下に、そのaaa.txt は作られるのですが、中身が入ってきません。ファイルの一覧がほしいとき、VBではどのようにコーディングすればいいのでしょうか。教えていただければ本当に助かります。よろしくお願いいたします。

  • ファイル名

    例えば Cドライブ直下にあるファイル名を全て テキストファイルに出したい ときにはどうすればいいでしょうか?DOSの使用以外でよろしくお願いします

専門家に質問してみよう