タイトルの通り、配列に格納したファイル名を昇順に並べ替えたいのですが、期待通りに動作しません。
内部コード(ユニコード?)順には並んでいるようですが、エクスプローラの名前順と同等にはなりません。
どのようにしたら、配列のファイル名をエクスプローラと同じように並べ替えできますか?
(テストに使用したコード)
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.1
- 回答日時:
モジュールの先頭に
Option Compare Text
を記述してみたら。
他に文字列の比較をしているところがあったら
そちらも影響を受けてしまいますが。
ご回答ありがとうございます。
今回はプロシージャ内で完結したいので、#2の方の方法を利用します。
何かありましたら、またよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
文字列をソートする方法
Visual Basic(VBA)
-
VBAにて 文字と数字が混在してるデータの並び替え
Excel(エクセル)
-
VBA 桁数が混在するソート
Excel(エクセル)
-
-
4
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
5
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
6
マクロでセルの右から2番目の文字を取得する方法を教えてください
Excel(エクセル)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
リストボックス内を昇順並べる方法
Excel(エクセル)
-
9
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
10
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
13
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
14
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
15
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
16
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
DBから取得した値を配列へ代入する
-
C#でbyte配列から画像を表示さ...
-
構造体配列の一部初期化!!!
-
エクセルでXY座標に並べられた...
-
VB6で、一次元配列と二次元配列...
-
定数配列の書き方
-
配列の中の最大値とそのインデ...
-
オブジェクト名を変数で参照で...
-
配列の要素がすべてカラかどう...
-
vba フィルター 複数条件 3つ以...
-
Dir関数で読み取り順を操作でき...
-
ActiveReports(アクティブレポ...
-
VB.NETの配列にExcelから読み込...
-
VBで配列に格納されているデー...
-
8bitインデックス画像の入出力方法
-
Redim とEraseの違いは?
-
VBでの配列をEXCELに出力する方法
-
EXCEL VBA 配列デー...
-
Excel2010のinputboxで複数デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報