vbaでは、特定のディレクトリ名のディレクトリを検索したいと思います。理想的には、検索時間は速くなります(Windows検索と同様)。Excel VBA:ディレクトリを検索
さまざまなソースから、再帰的なサブプログラムを使ってスクリプトを作成することができました。スクリプトは機能しますが、階層が少し複雑になるとすぐに非常に遅くなります。
検索を高速化する手段はありますか?
Sub GetFolder(Folder As String, searchF As String, colFolder As Collection)
Dim SubFolder, subF As New Collection, sf As String
If Right(Folder, 1) <> "\" Then Folder = Folder & "\"
If Dir(Folder & searchF, vbDirectory) <> "" Then colFolder.Add Folder & searchF & "\"
sf = Dir(Folder, vbDirectory)
Do While Len(sf) > 0
If sf <> "." And sf <> ".." Then
If (GetAttr(Folder & sf) And vbDirectory) <> 0 Then
subF.Add Folder & sf
End If
End If
sf = Dir()
Loop
For Each SubFolder In subF
GetFolder CStr(SubFolder), searchF, colFolder
Next
End Sub
ここでNorieが言ったことを読んでください(https://www.mrexcel.com/forum/excel-questions/449193-vba-fastest-most-reliable-way-list-files.html)。 'すべてのファイル名やその他の情報をパイプを使ってテキストファイルに送る小さなバッチファイルを書くことができます。 私が小さいと言うとき、私は小さなことを意味します - おそらく1行のコードでしょう。 生成されたテキストファイルは、Excelで簡単に開くことができます.'またはそこに書かれたコード。 – danieltakeshi
@danieltakeshiそれでは、一時ファイルとそれらに付属するすべての問題を作成しなければならないか、または単にvbaの一時ファイルを処理する方法を知っていますか? – Jonathan
まあ、私は知らない。私は、検索ワークブックが開いているときはいつでも、すべてのディレクトリのデータベースリストを取得し、Excel内でできるだけ多くの検索を行うことができます。 – danieltakeshi