|
▼もとあし さん:
>>下記のコードは、エラーがでます。(安易なもので、すみません。。。)
>なぜかは分かっていませんが、Dirを異なる階層で何度もループで使用するのは
>Dirの戻り値が変わるから、良くないのかな。。。と思っています。
ここは、お察しの通りだと思いますが、
自分の環境で実行するとそれ以前の箇所でエラーが出てしまいます。
(もちろんパスは修正してますが)
>何か、糸口だけでも教えていただけないでしょうか。
>また上記の理由が間違っていましたら、その正しいエラーの出る
>理由も併せて教えていただけないでしょうか。
Dirだけで行うとすると結構面倒な作業だと思います。
自分だったら、
FileSystemObjectでFoldersを再帰的に呼び出すか、
コマンドラインのDirを使ってやります。
混乱しそうなら下記コードは無視してください。
Sub Test()
Dim WSH As Object
Dim Cmd As Object
Dim CmdTxt As String
Dim myPath As String
Dim i As Long
Const Target_File As String = "*.xls"
Const Dir_Opt As String = "/S /B /A:-D" 'Dirオプションの指定(コマンドプロンプトで確認)
myPath = "C:\Work" '検索のルートパスの指定
CmdTxt = """dir" & Dir_Opt & " " & """" & myPath & "\" & Target_File & """"""
Set WSH = CreateObject("WScript.Shell")
Set Cmd = WSH.Exec("%ComSpec% /C " & CmdTxt)
i = 1
Do Until Cmd.StdOut.AtEndOfStream
Cells(i, 1).Value = Cmd.StdOut.ReadLine
i = i + 1
Loop
Set Cmd = Nothing
Set WSH = Nothing
End Sub
|
|