| 
    
     |  | なんどもスミマセン m(_ _)m 
 また不具合が見つかりました。
 主な変更は ◆か所ですが、他もあちこちブラッシュアップしてますので、
 そっくり差し替えてください。
 
 Function File_Search()  'Dirコマンドによるファイル検索(Ver.3)
 Dim LookIn As String
 Dim Filename As String
 Dim SearchSubFolders As Boolean
 Dim tmpPath As String
 Dim sCmd As String
 Dim ng As Long
 Dim j As Long
 Dim n As Long
 Dim io As Integer
 Dim buf() As Byte
 Dim ss As String
 Dim FoundFiles() As String
 
 For j = Cnt(0) To 1 Step -1
 LookIn = Left$(TL_Path, Cnt(j)) '検索するフォルダ
 SearchSubFolders = True     'Sub Folderも検索する
 Filename = WK_Name       '検索するファイル名
 If Right$(LookIn, 1) <> "\" Then LookIn = LookIn & "\"
 
 '---- Dirコマンドによるサブフォルダを含むファイル名の検索
 tmpPath = Environ$("Temp") & "\Dir.tmp" '一時ファイルパス
 
 sCmd = "DIR """ & LookIn & Filename & """ /b/s/a:-D > """ _
 & tmpPath & """"      '' /b ファイル名のみ
 '' /s サブディレクトリも検索
 '' /a:-D サブディレクトリー名は表示しない
 Debug.Print sCmd
 
 'Dirコマンド実行(tmpファイルに出力)
 With CreateObject("WScript.Shell")
 ng = .Run("CMD /C " & sCmd, 7, True)
 End With
 If ng Then
 Select Case ng
 Case 1: ss = "パス名が不正です" & vbCr & sCmd
 Case Else: ss = "ファイル検索時にエラー発生"
 End Select
 MsgBox ss & vbCr _
 & "処理を中断します", , LookIn & Filename
 Open_SW = "Error"
 Exit Function
 End If
 
 If FileLen(tmpPath) < 2 Then
 'このパスでは見つからなかったとき
 Debug.Print LookIn, Filename, "→ NO FILES"
 Open_SW = "Error" '次に検索パスに飛ぶ
 Else
 '----- Dirコマンドで取得したファイル名を配列に格納
 io = FreeFile()
 Open tmpPath For Binary As io
 ReDim buf(1 To LOF(io))
 Get #io, , buf
 Close io
 Kill tmpPath
 ss = StrConv(buf, vbUnicode)
 FoundFiles() = Split(ss, vbCrLf)
 '同名ファイルが存在した場合、フォルダのパスをセット
 For i = 0 To UBound(FoundFiles) - 1
 If FoundFiles(i) Like "*" & Filename & "*" Then
 WK_Path = FoundFiles(i)
 Open_SW = "OK"  '取得成功
 Exit Function  '◆変更
 End If
 Next
 End If
 Next j
 MsgBox "【" & WK_Name & "】対象ファイルなし" & vbCr _
 & "対象ファイルを準備後、処理して下さい。"
 End Function
 
 |  |