人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

For Each File In Folder.Files

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

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


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

Dim strTest() As String


●質問者: harunoharuno
●カテゴリ:コンピュータ
✍キーワード:as Folder String vb6 アドバイス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ken3memo
●100ポイント

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

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) を 使うことによって、すごく簡単になります。

とか?

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

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


2 ● SALINGER
●200ポイント ベストアンサー

ソートを書く方法ですが、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/


3 ● ardarim
●150ポイント

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ