【VB6 ファイルを名前昇順に読み込む方法】


For Each File In Folder.Files

という記述をし、
フォルダの中のファイルを一覧で表示しています。

この時に、読み込むファイル名を
名前を基準とし昇順で読み出したいと考えているのですが、、、
良い方法はありませんでしょうか?
アドバイスいただきたく宜しくお願いします。


なお現状では、以下のような配列にデータを詰込んだ後に
並べ替えするロジックを用意する方法しか思い浮かびません。

  Dim strTest() As String

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/28 13:15:03
  • 終了:2010/06/01 14:43:57

ベストアンサー

id:SALINGER No.2

SALINGER回答回数3430ベストアンサー獲得回数9692010/05/28 15:31:19

ポイント200pt

ソートを書く方法ですが、strcompを使った方法でいいと思います。

またファイルのソートということで、ソートするそんなに数が多いとも思えないので簡単な方法を紹介しておきます。

data()が配列、Countが要素数です。

Sub strSort(data() As String, Count As Integer)
    Dim i As Integer, j As Integer
    Dim temp As String

    j = 0
    Do While j < Count - 1
        i = j + 1
        Do While i < Count
            If StrComp(data(j), data(i), 1) = 1 Then
                temp = data(j)
                data(j) = data(i)
                data(i) = temp
            End If
            i = i + 1
        Loop
        j = j + 1
    Loop
End Sub

http://q.hatena.ne.jp/

その他の回答(2件)

id:ken3memo No.1

ken3memo回答回数241ベストアンサー獲得回数742010/05/28 14:01:40

ポイント100pt

少しインチキくさいのですが、ダミーのリストボックスを用意して、ソートがわりに使用してみるのは?

vb リストボックス ソート

で検索すると、リストボックスのソートについてコードが拾えます。

リストボックスのソートの方法

http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200508/0508...

あとは、少々大がかりにADOを使って?

KOZの館 - Visual Basic Programming - Top / TIPS / VB でお気楽ソート

http://kozhouse.homeip.net/TIPS/vbsort/

いままで、どうしても VB でやらなければならなくなった場合、シコシコ コーディングしてたソート処理ですが、Microsoft ActiveX Data Objects(ADO) を 使うことによって、すごく簡単になります。

とか?

何かの参考となればうれしいです。

※私も自作ソート処理は....ニガテです(自作コードだと単純ポカが怖くって最近書けなくなってるような)。

id:SALINGER No.2

SALINGER回答回数3430ベストアンサー獲得回数9692010/05/28 15:31:19ここでベストアンサー

ポイント200pt

ソートを書く方法ですが、strcompを使った方法でいいと思います。

またファイルのソートということで、ソートするそんなに数が多いとも思えないので簡単な方法を紹介しておきます。

data()が配列、Countが要素数です。

Sub strSort(data() As String, Count As Integer)
    Dim i As Integer, j As Integer
    Dim temp As String

    j = 0
    Do While j < Count - 1
        i = j + 1
        Do While i < Count
            If StrComp(data(j), data(i), 1) = 1 Then
                temp = data(j)
                data(j) = data(i)
                data(i) = temp
            End If
            i = i + 1
        Loop
        j = j + 1
    Loop
End Sub

http://q.hatena.ne.jp/

id:ardarim No.3

ardarim回答回数892ベストアンサー獲得回数1422010/05/29 02:40:36

ポイント150pt

Dictionaryオブジェクト(Scripting.Dictionary)を使うと自動的に辞書順に並び替えてくれるのでお手軽です。

Sub test()

    Dim fs As FileSystemObject
    Dim dict As Dictionary
    Dim objFolder As Folder
    Dim objFile As File
    Dim s As Variant
    
    Set fs = New FileSystemObject
    Set dict = New Dictionary
    
    Set objFolder = fs.GetFolder("c:\temp")
    
    For Each objFile In objFolder.Files
        dict.Add objFile.Name, objFile.Name
    Next objFile
    
    For Each s In dict
        Debug.Print s
    Next s
   
    Set dict = Nothing
    Set fs = Nothing

End Sub

(参考)Returning Files from the File System

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません