• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelでの Dir)

ExcelのDir関数を使用してフォルダ内のファイルを取得する方法

このQ&Aのポイント
  • ExcelのVBAでDir関数を使用すると、指定したフォルダに存在するファイルを取得することができます。
  • 質問のスクリプトでは、指定したフォルダ内のファイルを順番に取得していますが、ファイルの順番については不明です。
  • 実際にはアルファベット順に並んでいる可能性がありますが、確定的な順番は保証されていません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 少なくとも、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になっています。 調べた限りでは、それに矛盾は生じていません。

noname#95859
質問者

お礼

Wendy02さん、ありがとうございます。 矛盾が生じていないということを、積極的に使わさせていただきます。エクセルの中で、Dirを使って引っ張り出したListを、エクセルシートに持っていって、ソートして、処理しなければいけないかと危惧していたところです。 ありがとうございます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 #2の回答者です。 >エクセルシートに持っていって、ソートして、処理しなければいけないかと危惧していたところです。 JIS並びになっていないのですが、それでもよろしいのですか? アルファベット順には間違いないところですが、漢字の部分が大幅に違います。 関係ない話ですが、大方、有名なところのExcel関連のHPは、実情とは違ってきているようです。渡辺ひかる氏のCOMアドインのVBEPlus も、Office 2003 までのようです。

noname#95859
質問者

補足

Wendy02さん、ありがとうございます。 理解して、使います。 現在のファイルネームの規約は、 myfile_yyyymmddhhmmss.xls なんです。 漢字は使っていません。従って、大丈夫です。 ありがとうございます。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

以下のサイトの最後の方に少し説明があります。 http://www.officetanaka.net/excel/vba/file/file07.htm やはり公式なルールはないようです。

noname#95859
質問者

お礼

インターネットで見る限りは、小生も、そう思います。 でも、ありがとうございます。