
タイトルの通り、配列に格納したファイル名を昇順に並べ替えたいのですが、期待通りに動作しません。
内部コード(ユニコード?)順には並んでいるようですが、エクスプローラの名前順と同等にはなりません。
どのようにしたら、配列のファイル名をエクスプローラと同じように並べ替えできますか?
(テストに使用したコード)
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 で処理するかまだ決めていません。
(投稿文字数の関係で詳細は省略)
No.2ベストアンサー
- 回答日時:
文字列の比較に StrComp を使うとか
ご回答ありがとうございます。
StrComp 関数を利用して期待通りに動作しました。
※この関数は、Access クエリで利用したことがあったのですが
忘れていました。
何かありましたら、またよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
VBA(メモリ展開)
-
Dir関数で読み取り順を操作でき...
-
vba フィルター 複数条件 3つ以...
-
VBAで配列引数を値渡しできない...
-
C#でbyte配列から画像を表示さ...
-
DBから取得した値を配列へ代入する
-
エクセルでXY座標に並べられた...
-
デバイスマネージャーの一覧取得
-
VB6で、一次元配列と二次元配列...
-
配列の中から最大値だけ取り出...
-
Redim とEraseの違いは?
-
EXCELで年齢別の分布表を...
-
配列のペースト出力結果の書式...
-
OutOfMemoryExceptionの回避策...
-
エクセルVBAからNotesでメー...
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VBで組み合わせのプログラム...
-
C#で作成したdllをVBScriptで使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
vba フィルター 複数条件 3つ以...
-
配列のペースト出力結果の書式...
-
複数のtextboxの処理を一括で行...
-
Excelのメモリ(配列)の上限は2G...
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
Excel2010のinputboxで複数デー...
-
COBOLの基本的な事なので...
-
構造体配列内の文字列検索のよ...
-
VBAでMODE関数をつくる
-
Redim とEraseの違いは?
-
VBScriptでCSVファイルを読み出...
-
VB6のメモリ解放に関して
-
VB.NETの配列にExcelから読み込...
-
Segmentation Fault (メモリ制限?)
-
ActiveReports(アクティブレポ...
おすすめ情報