- ベストアンサー
ExcelのDir関数を使用してフォルダ内のファイルを取得する方法
- ExcelのVBAでDir関数を使用すると、指定したフォルダに存在するファイルを取得することができます。
- 質問のスクリプトでは、指定したフォルダ内のファイルを順番に取得していますが、ファイルの順番については不明です。
- 実際にはアルファベット順に並んでいる可能性がありますが、確定的な順番は保証されていません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 少なくとも、Office TANAKAの田中氏の書いている内容は、今となっては疑問ですね。 「FATに書き込まれた順番か」ということですが、それは以前のWin98の頃のものではないでしょうか。今、多くのユーザーは、NTFSであるし、その取り出す順番というのは、試してみると、「一応の」アルファベット順(Unicode順)に出てくるのではないでしょうか? 参考: http://blogs.msdn.com/oldnewthing/archive/2005/06/17/430194.aspx アルファベット順はともかく、その後の2バイト文字の状態を以下のコードで結果を調べてみました。 Sub Sample20a() Dim buf As String, i As Long buf = Dir("*.*") Do While buf <> "" If LenB(StrConv(Left(buf, 1), vbFromUnicode)) > 1 Then i = i + 1 Worksheets("Sheet1").Cells(i, 1) = buf If i > 100 Then Exit Do End If buf = Dir() Loop End Sub 1 バイト 文字は、1バイト文字でソートされ、2バイト文字は、2バイト文字で、Unicode 順にソートされますから、 msdn にある × U+00D7 Multiplication sign (掛け算の印) は、2バイト側の先頭に出てきます。文字コードをチェックすると、Unicode で、D7 ですが、=CODE(A1) -- [JIS] でみると、8543になっています。 調べた限りでは、それに矛盾は生じていません。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 #2の回答者です。 >エクセルシートに持っていって、ソートして、処理しなければいけないかと危惧していたところです。 JIS並びになっていないのですが、それでもよろしいのですか? アルファベット順には間違いないところですが、漢字の部分が大幅に違います。 関係ない話ですが、大方、有名なところのExcel関連のHPは、実情とは違ってきているようです。渡辺ひかる氏のCOMアドインのVBEPlus も、Office 2003 までのようです。
補足
Wendy02さん、ありがとうございます。 理解して、使います。 現在のファイルネームの規約は、 myfile_yyyymmddhhmmss.xls なんです。 漢字は使っていません。従って、大丈夫です。 ありがとうございます。
- hallo-2007
- ベストアンサー率41% (888/2115)
以下のサイトの最後の方に少し説明があります。 http://www.officetanaka.net/excel/vba/file/file07.htm やはり公式なルールはないようです。
お礼
インターネットで見る限りは、小生も、そう思います。 でも、ありがとうございます。
お礼
Wendy02さん、ありがとうございます。 矛盾が生じていないということを、積極的に使わさせていただきます。エクセルの中で、Dirを使って引っ張り出したListを、エクセルシートに持っていって、ソートして、処理しなければいけないかと危惧していたところです。 ありがとうございます。