アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォルダの中から作成日時を指定しファイルを開き、データ取得して閉じます。数千個の中から百個を開くイメージです。FSOを使用してますが、ファイル名タイムスタンプの取得は結構時間がかかり、1ファイル当たりコンマ数秒、全部集めると結構な時間になります。

DOSコマンドでDirなら全部でコンマ数秒のイメージがあるので、こちらに変更しようと考えてます。問題は手順です。
①シートにDOSコマンドを書き並べる
②バッチファイルに書き込み
③プロセスIDを取得し終了監視しつつ実行
④結果の入ったファイルをエクセルに読み込み、ファイル名とタイムスタンプ取得
⑤タイムスタンプからをファイルを選び、開く

無理とは言いません、全部心あたりはあります。が、私には少々道のり遠いです、特に③あたり。
もうちょっと簡単で速い方法はないでしょうか?

無ければ諦めて気合入れて上記でやります。

質問者からの補足コメント

  • 40分程度かかつてたのが15分になりました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/02/23 18:33

A 回答 (1件)

指定したフォルダの下にあるファイル名とそのタイムスタンプを取得できれば良いのですよね。


サブフォルダを無視して良いなら、こんなのはいかがでしょうか。
このサンプルプログラムは、"C:\Users\xxxx\Documents\"フォルダ内のファイル名をDir関数で順次取得し、さらに、FileDateTime関数でタイムスタンプを取得。それを Debug.Print しています。

Sub test()
Dim MyPathName As String
Dim MyFileName As String
Dim MyTimeStamp As String
Dim cnt As Long
MyPathName = "C:\Users\takashi\Documents\教えてGoo - コピー\"
MyFileName = Dir(MyPathName & "*.*")
Do While MyFileName <> ""
cnt = cnt + 1
MyTimeStamp = FileDateTime(MyPathName & MyFileName)
Debug.Print MyTimeStamp & " " & MyFileName
MyFileName = Dir
Loop
MsgBox cnt
End Sub
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。
下記URLによるとFSOの半分の時間で出来る様ですね。
http://tsware.jp/labo/labo_25.htm
まだ確認が取れてませんが、取り合えず御礼まで。

お礼日時:2016/02/19 08:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!