エクスプローラのソート順… which will be so complicated why

最近、MSの表計算アプリケーション、エクセルで、フォルダーの中のファイルのリストを作成するマクロを組んでいます。

ヘルプファイルを見ながら気楽に作ったのですが、どうやら、エクスプローラーのソート順ではファイルの一覧は取り出せないようです。
となると、マクロ内部で並び替えをしなければならないと言うことになります。

一文字のファイル名のテキストファイルを作って、名前順でソートをしてみたら、何となく見えてきました。
まず、OSの制限事項として、英文字の大文字・小文字は同じモノと認識しているようです。
たぶん、DOSモード上での取り扱いを考慮してのことだと思います。
※DOSモードはファイル名は大文字・小文字の区別がないためだと思われます。
そして、一番頭の痛いソート規則が、数字としての取り扱い。
どういう事かというと、数字は単純な文字列…ではなく、数字として比較しているようです。
例えば、5.txtというファイルと100.txtと言うファイルがあったとしたら、普通に考えれば、頭の一番目の文字列を比較して、1よりも5の方がコード的にあとなので10.txt、5.txt…となりそうなモノですが、5.txt、10.txtと言う順でソートされます。
なぜこうなるのか、ずいぶんと悩んだモノですが、どうやら、連続した数字文字は数字として比較しているんだな…と解釈しました。
ファイル名を1文字ずつ比較して違いが出た位置の文字の順を判定すれば良いだけのロジックはここで、通用しなくなってしまいます。
ここがいま、頭を悩ませている部分ですorz

同じ数字で、違う挙動をしている部分があります。
0(ゼロ)です。
どうも、0が連続して存在するとソートする順がおかしな事になります。
000.txt、00.txt、0.txtなんて言う順に並びましたよ。0だけ、扱いが別のような気がしてきました。
もっとも、エクスプローラーも、名前ソートを繰り返し実行すると、昇順、降順でそれぞれ2種類のソート結果になったので、ソートの規則が2種類存在するのかもしれません。
どのみち、頭の痛い問題です。

本当は、もっと頭の痛い問題があるのですが、これは放棄しました(^_^;
『亜』から始まる漢字の部分は、どうも読みを振り当てて、その順でソートしているような挙動が見られました。
こうなると、OSからでも、その読みを引き出せる手段が存在しない限りはもう、お手上げになります。

いやぁ…本当に頭が痛いんですよ。

MSのページでも探し回ってみるのが良いのかな…orz

Comments are closed.