|
Dir関数の代わりに Dirコマンドを使ってサブディレクトリも同時検索する
サンプルです。
'-----------------------------------------------------------
Option Explicit
'// D:\(Data)\temp\subTemp\JoinCSV200.csv を D:\(Data)\ を指定して検索
Sub Example()
Dim caseFolderPath$: caseFolderPath = "D:\(Data)\"
Dim caseFilename$
caseFilename = Dir2(caseFolderPath & "JoinCSV200*.csv")
MsgBox caseFilename
End Sub
'サブフォルダを含むファイルの検索(最初に見つかったファイルパスを返す)
Private Function Dir2(PathFilename As String) As String
Dim i As Long
Dim tmpPath As String
Dim sCmd As String
Dim ko As Long
tmpPath = Environ$("Temp") & "\Dir.tmp" '◆Dirの結果ファイル出力パスファイル名 ←適宜変更
sCmd = "DIR """ & PathFilename & """ /b /s > """ & tmpPath & """"
'/b:ファイル名のみ /s: サブディレクトリも検索
Debug.Print sCmd
With CreateObject("WScript.Shell")
ko = .Run("CMD /C " & sCmd, 7, True) 'Dirコマンド実行
End With
If FileLen(tmpPath) < 3 Then Exit Function
Dim io%
Dim buf() As Byte
io = FreeFile()
Open tmpPath For Binary As io
ReDim buf(1 To LOF(io))
Get #io, , buf
Close io
Kill tmpPath
Dir2 = Split(StrConv(buf, vbUnicode), vbCrLf)(0)
End Function
|
|