|
以前にこちらで質問したミーコです。
ある方より、サブフォルダに存在するExcelブックまで読み取れる
コードを教えてもらいました。
ただ、どうも
fList = SubDir("C:\Documents and Settings\AAA\*.xls")
の部分で、階層の深いファイルが読み取れない現象が生じています。
階層が深いのが原因なのか、Excelブック名が長いのが原因なのか(80文字)わかりません。
SubDirという関数には読み取れる文字数に限界があるのでしょうか?
(教えてもらったコード)
Option Explicit
Sub Try1()
Dim i As Long
Dim fList() As String
''検索パスとファイル拡張子を指定してSubDir付き検索
fList = SubDir("C:\Documents and Settings\AAA\*.xls")
For i = 0 To UBound(fList)
Debug.Print fList(i)
Next
End Sub
'サブフォルダを含むファイルの検索(ファイルリストを返す)
Private Function SubDir(Filename As String) As String()
Dim v
Dim tmpPath As String
Dim sCmd As String
Dim ko As Long
tmpPath = Environ$("Temp") & "\Dir.tmp"
sCmd = "DIR """ & Filename & """ /b/s /o:N > """ _
& tmpPath & """"
With CreateObject("WScript.Shell")
ko = .Run("CMD /C " & sCmd, 7, True) 'Dirコマンド実行
End With
Dim io As Integer
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
SubDir = Split(StrConv(buf, vbUnicode), vbCrLf)
End Function
'--------------------------------------------------
|
|