| 
    
     |  | こんにちは よろしくお願い致します 
 APIを使用したファイルの高速検索処理
 ▼【58198】再帰処理でのファイル検索
 tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=58198;id=excel
 でお世話になりました
 
 
 最後のほうに記載のある
 kanabunさんの 【58200】Re:再帰処理でのファイル検索 のコードで
 
 Sub Try_Start()
 
 If n Then
 MsgBox Join(myList, vbCr), , strFind & " ---> " & n & " Files"
 Else
 MsgBox "該当ファイルなし"
 End If
 の
 MsgBox Join(myList, vbCr)
 を
 Cells(1, 1) = Join(myList, vbCr)
 で、シートに一発展開できるので、対象ファイルが600程度あっても
 4秒程度で処理が完了なのですが
 
 
 上記に加えて
 1)フォルダの階層が深いのでフルパスではなく指定フォルダ以下のパスに修正
 2)特定ブックの時だけ、指定セルから値取得したいと思っています
 
 で、
 Cells(1, 1) = Join(myList, vbCr)
 の変わりに
 
 For CNTR = 1 To UBound(myList)
 
 
 'ブックの入力シートのAX69のセルが空値で無ければ、その値を取得
 If IsError(TG_Val_M4(myList(CNTR), "ST1", "AX", 69)) = True Then
 
 Else
 
 Cells(ROW_CNT, 1) = Left(RE_PATH(myList(CNTR), "\", 8), 7) & "___ " & TG_Val_M4(myList(CNTR), "入力S", "AX", 69)
 ROW_CNT = ROW_CNT + 1
 
 End If
 
 'ブックのあるフォルダ以下のパス記載
 Cells(ROW_CNT, 1) = RE_PATH(myList(CNTR), "\", 8)
 
 ROW_CNT = ROW_CNT + 1
 
 Next
 
 なんてすると、一機十倍以上の時間が掛かってしまいます
 
 どのような処理にすればよいでしょうか
 
 
 補足
 
 'シートの AX69 の値取得
 Public Function TG_Val_M4(tg_f_path As String, tg_s As String, cn As String, rc As Integer)
 
 TG_Val_M4 = Application.ExecuteExcel4Macro("'" & Left(tg_f_path, InStrRev(tg_f_path, "\")) & _
 "[" & Right(tg_f_path, Len(tg_f_path) - InStrRev(tg_f_path, "\")) & "]" & _
 tg_s & "'!R" & rc & "C" & Columns("" & cn & "").Column)
 
 End Function
 '↑下記を後から作成したので・・そのままです・・・
 
 'フルパスを特定のパス以下に変更する
 Function RE_PATH(strWords As String, strDelim As String, ori_cnt As Integer)
 
 Dim astrWords() As String
 Dim cnt   As Long
 
 Dim NEW_WD As String
 
 astrWords = Split(strWords, strDelim)
 
 For cnt = ori_cnt To UBound(astrWords)
 NEW_WD = NEW_WD & "\" & astrWords(cnt)
 Next
 
 'RE_PATH2 = NEW_WD
 '最初の\を取り除く
 RE_PATH = Mid(NEW_WD, 2, Len(NEW_WD))
 
 End Function
 
 
 追記
 1)フォルダの階層が深いのでフルパスではなく指定フォルダ以下のパスに修正
 は、エクセルでの置換機能でもいいと思っていますが
 
 2)特定ブックの時だけ、指定セルから値取得したいと思っています
 の処理が必要です
 
 また、
 多分、ブックを開かないので Application.ExecuteExcel4Macro が
 最速ではないかと思っているのですが、この辺もアドバイスありましたら
 よろしくお願い致します
 
 
 |  |