プロが教えるわが家の防犯対策術!

タイトルの通り、配列に格納したファイル名を昇順に並べ替えたいのですが、期待通りに動作しません。
内部コード(ユニコード?)順には並んでいるようですが、エクスプローラの名前順と同等にはなりません。

どのようにしたら、配列のファイル名をエクスプローラと同じように並べ替えできますか?

(テストに使用したコード)
Public Sub Test1()
Dim FileNames() As String
Dim WSH As Object
Dim MyPathName As String
Dim MyFileName As String
Dim i As Integer
Dim j As Integer

'処理対象フォルダを指定
Set WSH = CreateObject("WScript.Shell")
MyPathName = WSH.SpecialFolders("MyDocuments")
Set WSH = Nothing

i = 0
MyFileName = Dir(MyPathName & "\" & "*.*")
If MyFileName = "" Then
MsgBox "対象ファイルが1つも見つかりません。", , "処理終了"
Exit Sub
End If

'ファイル一覧を配列に格納
Do Until MyFileName = ""
i = i + 1
ReDim Preserve FileNames(1 To i)
FileNames(i) = MyFileName
MyFileName = Dir
Loop

'配列を並べ替える
For i = 1 To UBound(FileNames) - 1
For j = i To UBound(FileNames)
If FileNames(i) > FileNames(j) Then
MyFileName = FileNames(i)
FileNames(i) = FileNames(j)
FileNames(j) = MyFileName
End If
Next j
Next i
End Sub

※以降の処理は、Excel で処理するか Access で処理するかまだ決めていません。
 (投稿文字数の関係で詳細は省略)

A 回答 (2件)

モジュールの先頭に


Option Compare Text
を記述してみたら。

他に文字列の比較をしているところがあったら
そちらも影響を受けてしまいますが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

今回はプロシージャ内で完結したいので、#2の方の方法を利用します。

何かありましたら、またよろしくお願いします。

お礼日時:2006/05/14 11:36

文字列の比較に StrComp を使うとか

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

StrComp 関数を利用して期待通りに動作しました。
※この関数は、Access クエリで利用したことがあったのですが
 忘れていました。

何かありましたら、またよろしくお願いします。

お礼日時:2006/05/14 11:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A