こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excelでの Dir

excel VBAにて Dir関数を用いて、フォルダに存在するファイルを
つかむのに、下記のスクリプトがあります。(渡辺ひかる氏のサンプル集)。
質問は、このスクリプトで引っ張り出されるファイルの順番です。本を色々調べたのですが、順番は、「不明」とあります。
しかし、現実は、アルファベット順? に並んでいるように思われます。 本当のところは、どうなんでしょう?
「不明」なのか、それとも「順番が成立している」のか?
よろしくお願いします。
----------------------------------------
Option Explicit
Sub P_Sample003()
Dim myPath As String
Dim myFileName As String
Dim i As Long
myPath = ThisWorkbook.Path & "\" '任意のフォルダ
myFileName = Dir(myPath, 0)
Do While Len(myFileName) > 0
Debug.Print myPath & myFileName
myFileName = Dir()
Loop
End Sub

投稿日時 - 2008-11-26 00:40:19

QNo.4507622

すぐに回答ほしいです

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

こんばんは。

少なくとも、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になっています。

調べた限りでは、それに矛盾は生じていません。

投稿日時 - 2008-11-26 02:43:12

お礼

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

投稿日時 - 2008-11-26 13:05:18

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

こんばんは。

#2の回答者です。

>エクセルシートに持っていって、ソートして、処理しなければいけないかと危惧していたところです。

JIS並びになっていないのですが、それでもよろしいのですか?
アルファベット順には間違いないところですが、漢字の部分が大幅に違います。

関係ない話ですが、大方、有名なところのExcel関連のHPは、実情とは違ってきているようです。渡辺ひかる氏のCOMアドインのVBEPlus も、Office 2003 までのようです。

投稿日時 - 2008-11-26 17:33:48

補足

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

投稿日時 - 2008-11-26 21:35:23

ANo.1

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

投稿日時 - 2008-11-26 00:59:25

お礼

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

投稿日時 - 2008-11-26 12:54:42

あなたにオススメの質問