[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/02/23(Wed) 13:56
投稿者名:tanaka
Eメール:
URL :
タイトル:
フォルダ内ファイル一覧の取得
こんにちは。
今以下のように、DIR関数を使用して、ファイル名の一覧を取得しているのですが、
ファイルが4つ存在する場合、3つ、ファイルが3つ存在する場合、2つとファイルが1つ
欠けてしまいます。原因がわからずに困っています。宜しくお願いします。

ソース
Dim myFileName As String
myFileName = Dir(App.Path & "\support\" & "*")
    While myFileName <> vbNullString
        myFileName = Dir()
Form1.List1.AddItem myFileName
Wend

投稿時間:2005/02/23(Wed) 14:19
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: フォルダ内ファイル一覧の取得
> ファイルが4つ存在する場合、3つ、ファイルが3つ存在する場合、2つとファイルが1つ
> 欠けてしまいます。原因がわからずに困っています。宜しくお願いします。

原因は、「最初の一個を読み飛ばしているから」だと思いますよ。
たとえば、ファイルが2つだけ存在する場合を想像してみてください。


> Dim myFileName As String
> myFileName = Dir(App.Path & "\support\" & "*")
まず、この段階で「ファイル1」が myFileName に格納されますが、

>     While myFileName <> vbNullString
>         myFileName = Dir()
この段階で、myFileName の内容が「ファイル2」で上書きされてしまいます。

>  Form1.List1.AddItem myFileName
> Wend
ですから、ここで AddItemされるのは、「ファイル2」の方だけですよね。

投稿時間:2005/02/23(Wed) 14:20
投稿者名:フォレスト
Eメール:
URL :
タイトル:
Re: フォルダ内ファイル一覧の取得
> こんにちは。
> 今以下のように、DIR関数を使用して、ファイル名の一覧を取得しているのですが、
> ファイルが4つ存在する場合、3つ、ファイルが3つ存在する場合、2つとファイルが1つ
> 欠けてしまいます。原因がわからずに困っています。宜しくお願いします。
>
> ソース
> Dim myFileName As String
> myFileName = Dir(App.Path & "\support\" & "*")
>     While myFileName <> vbNullString
>         myFileName = Dir()
>  Form1.List1.AddItem myFileName
> Wend

Dir関数を2回使用しているのが原因でしょう。
最初のファイル名を表示する前に次を取得してしまっています。
こんな感じでどうでしょう??

    Dim myFileName As String
    
    myFileName = Dir(App.Path & "\support\" & "*")

    Do
        Form1.List1.AddItem myFileName
        myFileName = Dir()
    Loop Until myFileName = vbNullString

※動作環境 VB6,Win2000

投稿時間:2005/02/23(Wed) 15:20
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^2: フォルダ内ファイル一覧の取得
>     Do
>         Form1.List1.AddItem myFileName
>         myFileName = Dir()
>     Loop Until myFileName = vbNullString

Do 〜 Loop Until ではなく、Do Until 〜 Loop にする必要があるかも。

投稿時間:2005/02/23(Wed) 15:26
投稿者名:フォレスト
Eメール:
URL :
タイトル:
Re^3: フォルダ内ファイル一覧の取得
> >     Do
> >         Form1.List1.AddItem myFileName
> >         myFileName = Dir()
> >     Loop Until myFileName = vbNullString
>
> Do 〜 Loop Until ではなく、Do Until 〜 Loop にする必要があるかも。

確かにそうですね。
フォルダ内にファイルがないときに、実行時エラーになっちゃいますね。
Do Until 〜

Loop
ですね<(_ _ )>

投稿時間:2005/02/23(Wed) 17:37
投稿者名:tanaka
Eメール:
URL :
タイトル:
解決
フォレストさん魔界の仮面弁士さん素早いレス有難う御座いました。
上手くいきました。
ファイルの上書きが原因だったのですね。
参考に書いてもらったソースを少し改造して使わせて頂きたいと思います。