目的:
全フォルダの中から特定の名前がついたファイルを見つけ、リストにする
下記のコードの中で FirstGetFile = Dir(Path & "" & Target) で検索かけて特定ファイルを探しています。
ただ、今のコードでは無作為に全フォルダを見に行っており処理が結構かかります。
少しでも軽減できるように階層数を指定し、それ以上の階層になると強制的に次のフォルダに
行くようなコードを書きたいです。
その中で、カウント変数を用いて処理をしようと思いましたが、
Call FileSearch() で変数リセットされてしまう点や(Staticも考えましたがいい案が思いつかず)
連続したフォルダ階層数の維持が浮かんでこず詰まっております。
いい案があればご教授お願いします。
Function FileSearch(Path As String, Target As String, SpFileCount As Long) As String Set wsSP = ActiveWorkbook.Worksheets("") Set wsZikkou = ActiveWorkbook.Worksheets("") With wsZikkou Period = .Range("B3").Value End With Set FileObject = CreateObject("Scripting.FileSystemObject") For Each Folder In FileObject.GetFolder(Path).SubFolders Debug.Print Folder Call FileSearch(Folder.Path, Target, SpFileCount) Next Folder '----検索処理ーーーーーーーーーーーーーーーーーーーー FirstGetFile = Dir(Path & "\" & Target) Do While FirstGetFile <> "" FirstFileCheck = Mid(FirstGetFile, 12, 2) If IsNumeric(FirstFileCheck) Then If FirstFileCheck = Period Then With wsSP SpFileCount = SpFileCount + 1 End With End If End If FirstGetFile = Dir() '次のファイルを検索 Loop
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/28 07:44