FileSystemObjectのGetFolderで取得できるファイルの並び順

このQ&Aのポイント
  • FileSystemObjectのGetFolderメソッドで取得できるファイルの並び順について教えてください。
  • Access2002VBAを使用しており、特定のフォルダ内の全ファイルをアクセスしたいです。
  • ファイル名の昇順や作成年月日、更新年月日の昇順にファイルを取得する方法が知りたいです。
回答を見る
  • ベストアンサー

FileSystemObjectのGetFolderで取得できるファイルの並び順

お世話になっております。 Access2002VBAを使用しております。 サンプルを以下に示します。 '------------------------ Set FS = CreateObject("Scripting.FileSystemObject") Set obF = FS.GetFolder(RD & ":\" & RP) Set colF = obF.Files For Each F In colF '各ファイルアクセス Next Set FS = Nothing Set obF = Nothing Set colF = Nothing Set F = Nothing '------------------------ 特定のフォルダ内の全ファイルをアクセスする プログラムを作成しております。 この際、ファイル名の昇順、もしくは作成年月日、更新年月日の昇順にファイルをアクセスしたいのですが、 FileSystemObjectを使用して、ファイルを順当に取得する 方法がわかりません。 もしそのような方法がなければ、 配列にファイル名、年月日を入れて、 擬似的に並べ替えをおこなうか、 作業用テーブルにファイル名、年月日を入れて、 order by で取得しなおして、順当にファイルアクセス とおもっております。 FileSystemObjectのGetFolderメソッドで 取得できるファイルは何の順番で取得されるのでしょうか。 また何れか、もしくはその他よい方法等がございましたら、 ご教授いただきたいと存じます。 よろしくお願いいたします。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>FileSystemObjectを使用して、ファイルを順当に取得する >方法がわかりません。 ありません。 >作業用テーブルにファイル名、年月日を入れて、 >order by で取得しなおして、順当にファイルアクセス adoなら作業用テーブルを作らなくてもソートが可能です。 http://www.geocities.co.jp/SiliconValley/4334/unibon/archive/adosort.html >FileSystemObjectのGetFolderメソッドで >取得できるファイルは何の順番で取得されるのでしょうか OSが管理している順番になります。 DBのレコード順と同じもんだと思って結構です。 なんで、自分でソートする必要がありますが、配列を使うのではなく、ADOでソートするのが件数が多い場合速いと思います。

参考URL:
http://www.geocities.co.jp/SiliconValley/4334/unibon/archive/adosort.html
o_w_nakazaki
質問者

お礼

早々のご回答をいただきまして、ありがとうございます。 ご提示くださったアドバイス、リンクをもとに 概ね、当方が望む処理を行うことができました。 お礼申し上げます。

関連するQ&A

  • FileSystemObjectでのパス名の取得

    お世話になります。 VBScriptでフォルダ内のファイルコピーのスクリプトを作っているのですが、FileSystemObjectを使用してネットワーク共有してある日本語のフォルダ名(Getfolder)を取得すると文字化けして取得できません。 Dim fso,fo set fso = CreateObject("Scripting.FileSystemObject") set fo = fso.getfolder(フォルダパス) WScript.Echo fo.path <---フォルダのパスを表示 なにか解決する方法はありますでしょうか? ちなみに、ローカルドライブの日本語フォルダは正常に取得できました。

  • 「Scripting.FileSystemObject」について

    ただいまASPでWebシステムの開発をしております。 「Scripting.FileSystemObject」で質問をさせてください。 ASPの処理の中でファイルの削除をやりたかったので「Scripting.FileSystemObject」でファイル操作をしようと思いました。 記述は以下の通りです。 Dim objFileDelete Set objFileDelete = CreateObject("Scripting.FileSystemObject") objFileDelete.DeleteFile 消したいファイルのパス & ファイル名 ,True Set objFileDelete = Nothing 実行後にファイルを確認しましたが、消されていませんでした。 実行時にエラーにもなりませんでした。 調べてみると「Scripting.FileSystemObject」オブジェクトが作成されていないようなのです。 疑問に思ったことですが、そもそも「Scripting.FileSystemObject」はなにに入っている(表現がおかしいかもしれません)ものなのでしょうか? Windowsのシステムなのでしょうか? それともIISに依存するものでしょうか? 御存知の方がおりましたら教えてください。 お願いします。

  • あるフォルダのファイル名を取得したい(vbs)

    VBスクリプトを使って、TESTフォルダにあるJPGファイル中で、一番新しいファイルのファイル名を取得したいと思っています。 JPGは、ファイル名が日付.jpgになっています。例)061123.jpg vbsは苦手で途中挫折してしましました。。ぜひ教えて頂けないでしょうか。 --------------- Dim Fs,strPath,Fl Set Fs = CreateObject("Scripting.FileSystemObject") strPath = "C:\Test\" Set Fl = Fs.GetFile(strPath) MsgBox Fl Set Fs = Nothing Set Fl = Nothing

  • VB.NETでファイル名順にファイルを読む方法

    VB.NETで、あるフォルダ内のファイルをファイル名順に読む方法を教えてください。 ちなみに、現在は、以下のような処理をしています。 fs = CreateObject("Scripting.FileSystemObject") f = fs.GetFolder(strDirPath) fc = f.Files For Each f1 In fc ・ ・ ・ Next ご回答、よろしくお願いします。

  • VBScriptで、任意のフォルダコレクションを取得するには?

    VBScriptについて質問します(マイナーですみません) 任意のフォルダコレクションを取得して、 そのフォルダ名を1つ1つ得たいんですが、 うまくいきません。 FileSystemObjectを作成して、 任意のフォルダ(MyFolder)を取得することはできました。 Set fso=CreateObject("Scripting.FileSystemObject") Set f=fso.GetFolder("C:/....../デスクトップ/MyFolder") いま、MyFolder の下に、複数のサブフォルダがあるとき、 サブフォルダのコレクションを取得して、 サブフォルダ名を1つ1つ得るには、 どうしたらいいのでしょうか? よろしくおねがいします。

  • FileSystemObjectでエクセル作成

    エクセル2003です。 Sub test() Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.CreateTextFile("C:\test.xls") .Close End With Set FSO = Nothing End Sub これでエクセルファイルを作成することが出来るのですが サイズが0KBであり、中身を開いて文字を入れて保存しようとすると 「テキスト(タブ区切り)と互換性のない機能が含まれている可能性があります」 と言うメッセージが表示されます。 普通のエクセルファイルとは違うファイルが作成されてしまってるのでしょうか? CSVファイルではなく普通のエクセルファイルをFileSystemObjectで作成する方法をご教授ください。

  • フォルダ一覧の並べ替え

    フォルダ一覧をするコードです。下記はフォルダ名順に並んで表示されますが、これを逆順に並べ替えする方法についてアドバイスいただけないでしょうか。検索するもなかなか探せず。もしくはフォルダ作成日の新しい順でも可 です。 <% Set fs = CreateObject("Scripting.FileSystemObject") di = fs.GetParentFolderName(Request.ServerVariables("PATH_TRANSLATED")) Set f = fs.GetFolder(di) Set fc = f.SubFolders For Each f1 In fc Response.write f1.Name & "<BR>" Next %>

  • FileSystemObjectのオーバーフロー

    FileSystemObjectで 1台のPCだけ、以下のプログラムで実行時エラー6オーバーフロー が発生します。 他の開発環境2台、実行環境2台では発生せず。 WinXP VB6+SP6です。 ~プログラム~ Set Fso = CreateObject("Scripting.FileSystemObject") 'ファイルの末尾から書き込みモード(第2引数=8)で開きます Set FsoTS = Fso.OpenTextFile(strPathFile, 8) lngファイル行数 = FsoTS.Line - 1 FsoTS.Close Set FsoTS = Nothing Set Fso = Nothing 質問内容 ・FSOを無効にする設定はありますか? ・FSOを無効にできた場合、「オブジェクトが作成できません」 のエラーになると思うのですが、そのエラーにはなりません。 ※実行環境が現在手元にないので、実証できない状態です。 以上

  • VBAで巨大なファイルの途中からの読み込み

    こんにちは。 EXCELのVBAにて巨大なファイルのデータを途中から読み込む方法がございましたらご教授いただきたいと思っています。 具体的には300万行ほどのCSVデータがありまして たとえば、50万行目のデータを読み込みたい場合下記のようにすることにより、データの取得は可能なのですが、50万行目までSKIPするのに数秒の時間がかかってしまいます。いきなり50万行目からのデータを取得するようなスマートな方法は存在するのでしょうか。 よろしくお願いいたします。 Const ForReading = 1, ForWriting = 2, ForAppending = 3 Dim fs, f Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.OpenTextFile("C:\tmp.csv", ForReading, 0) For w = 0 To 500000 f.skipline Next Debug.Print f.readline f.Close

  • CSVファイル

    CSVファイルを1行ずつ比較して読み込み、一致した行を別ファイルに記述していこうと思っています。 現在、csvファイルを読み込む所まで出来ています。 比較して別ファイルに記述する方法を教えて下さい。 もしくはアドバイスください。 【ファイルの中身】 "09/09/2005 0:00:00,aaa,bbb,ccc" 【比較条件】 当日の日付を取得し、年月日だけで比較する Dim objFSO ' FileSystemObject Dim objFile ' ファイル読み込み用 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("c:\test.csv") Do while objFile.ReadLine <> ""         'IF文を記述(条件:日付)        '別ファイルに記述する Loop objFile.close Set objFileSystem = Nothing Set objFile = Nothing