• ベストアンサー

Files コレクションの順序

エクセルVBAですが 特定のフォルダ内の全ファイル名を取得するのにFiles コレクションが使えると思います。 このFilesコレクションに入るデータの順序を、日付順でソート出来るでしょうか? コマンドラインでいうと、Dir /OD に相当する動作だと思うのですが・・・ 一般的に取得したあとfor each ~で処理すると思うのですが。 日付の古いファイルから呼び出して処理をしたいのです。 ですので、コレクションから呼び出す段階で日付の古い順から呼び出す方法でも構いません。 どなたか教えて頂けないでしょうか。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

エクセルVBAなのであれば、Worksheetに書き出してソートするのが簡単かと思います。 http://itpro.nikkeibp.co.jp/article/COLUMN/20060120/227645/ >コマンドラインでいうと、Dir /OD に相当する動作だと思うのですが・・・ これをそのまま使う方針でいいなら Dim v() As String v = Split(CreateObject("WScript.Shell").Exec("%ComSpec% /c dir ""c:\temp"" /a-d/b/od/tw").StdOut.ReadAll, vbCrLf) Stop コマンドプロンプト表示が気になるなら Const wrk = "c:\out.txt" '出力用。既存ファイルに注意 Dim v() As String CreateObject("WScript.Shell").Run "%ComSpec% /c dir ""c:\temp"" /a-d/b/od/tw>" & wrk, 0, True Open wrk For Input As #1 v = Split(StrConv(InputB(LOF(1), #1), vbUnicode), vbCrLf) Close #1 'Kill wrk '必要に応じ Stop

noname#171966
質問者

お礼

ありがとうございます。 エクセルのセルは使用せずマクロ内だけで回したかったので、 ご提示の方法は私は使用しませんでした。 しかしコマンドラインのこの利用方法は参考になります。 ありがとうございました。

その他の回答 (1)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

回答では在りませんが 私も同じような処理の必要があったのですが、調べてもわからなかったので、力任せに自分で全部のファイルの作成日を配列に入れて自分でソートしてから処理しました。

noname#171966
質問者

お礼

ありがとうございます。 私も結局力業でプログラムを書いてしまいました。 面倒なのでバブルソートですが。

関連するQ&A