|
▼もとあし さん:
こんばんは。
>複数の階層に渡って存在する複数のフォルダの各末端にデータファイルがたくさんあります。
>FolderA の下に SubFolder1, SF2, SF3,...。
>その各SFのしたにSubSubFolderイ, SSFロ, SSFハ...と続き、
>その各SSFの下にDetaFileあ, DFい, DFう...と続きます。
>
>フォルダもファイルも会社のサーバー内にあり、ファイルはカテゴリで分けられており、
>データファイルが新規に増えれば、フォルダもファイルも新しく増える可能性があります。
>その全ファイル名のリストを取得したのですが、その方法が分かりません。
>
>#22734が一番近いような気がしたので、「にらめっこ」したのですが、
>何をしているのか、ぼんやりとしか分からない状態です。
>
>下記のコードは、エラーがでます。(安易なもので、すみません。。。)
>なぜかは分かっていませんが、Dirを異なる階層で何度もループで使用するのは
>Dirの戻り値が変わるから、良くないのかな。。。と思っています。
>
>何か、糸口だけでも教えていただけないでしょうか。
>また上記の理由が間違っていましたら、その正しいエラーの出る
>理由も併せて教えていただけないでしょうか。
>
>よろしくお願いします。
>
目安箱にいくつもありますよ!!
www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=74;id=FAQ
FSOを使ったコードが再帰ロジックの典型コードとして
よく使われていますから、再帰処理を学ぶにはよさそうですよ!!
>Sub FSearch()
>
>Dim PartsPath As String
>Dim FldName1 As String
>Dim FldName2 As String
>Dim FilName As String
>
>PartsPath = "K:\AAA\BBBB\"
>
>FldName1 = Dir(PartsPath, vbDirectory)
>
>Do While FldName1 <> ""
> If FldName1 <> "." And FldName1 <> ".." Then
> If (GetAttr(PartsPath & FldName1) And vbDirectory) = vbDirectory Then
> FldName2 = Dir(PartsPath & FldName1 & "\", vbDirectory)
> Do While FldName2 <> ""
> If FldName2 <> "." And FldName2 <> ".." Then
> If (GetAttr(PartsPath & FldName1 & "\" & FldName2) & _
> And vbDirectory) = vbDirectory Then
> FilName = Dir(PartsPath & FldName1 & "*.xls", vbNormal)
> Do While FilName <> ""
> Debug.Print FldName1, FldName2, FilName
> FilName = Dir
> Loop
> End If
> End If
> FldName2 = Dir →ここでエラー
> Loop
> End If
> End If
> FldName1 = Dir
>Loop
>
>End Sub
|
|