访问VBA:搜索多个目录中的多个文件

时间:2015-02-09 15:10:16

标签: vba ms-access

我在MS-Access中有一个包含目录路径的表。在表单中,我有一个列表框,其中包含要搜索的文件列表。我使用以下代码:

    Set rst = dbs.OpenRecordset("SELECT * FROM mytable;")
    While Not rst.EOF        
         strPath = rst!Path
         For i = 0 To lstBox.ListCount - 1
            strFullPath = strPath & "\" & lstBox.ItemData(i)
            If Len(Dir(strFullPath)) <> 0 Then
            'Do something 
            End If  
         Next i
         rst.MoveNext
    Wend

这完全没问题,但它不是最佳解决方案。例如,在表格中,如果我有5个不同的目录路径,并且在列表框中,如果我有2个要搜索的文件,即使我在前两次迭代中找到2个文件,循环也总是运行10次。根据代码,即使已在第一个目录路径中找到该文件,它也会在其余4个目录中搜索相同的文件。有没有更好的方法来减少迭代次数?

在我的情况下,我通常会在列表框中至少有10个目录路径和20个文件进行搜索,因此循环将迭代200次,这将降低性能。

1 个答案:

答案 0 :(得分:1)

跟踪已找到的文件数量,然后在达到目标数量时突破循环,即

Dim FileCount as Long
FileCount = 0

Do While not rst.EOF

    'If file found:
        FileCount = FileCount + 1
        If FileCount = lstBox.ItemsSelected.Count Then Exit Do
    'Do stuff

Loop

您甚至可以迭代ListBox中的所选项目以进一步加快速度 - ItemsSelected属性包含此内容。