使用不同的关键字VBA在文件夹中查找文件

时间:2015-06-27 12:02:12

标签: excel vba excel-vba

我是VBA的新手。我的问题是我有一个文件,将由不同的用户更新到一个特定的文件夹。现在,每当用户更新文件时,文件的名称可能不是相同的文件夹。但是,我可以使用特定关键字缩小范围。我能够使用关键字而不是多个关键字搜索文件。请问您能指出我如何使用多个关键字在文件夹中查找文件的正确方向吗?是否可以编写类似下面的代码?

Sub Start_countries()
Dim keyword, pathname, filename As String
pathname = "C:\XYZ\"

keyword = "lol" Or "rofl" Or "lmfao" Or "rotfl"

filename = Dir(pathname & "*.xls*")
Do While filename <> "*.xls*"
   If LCase(filename) Like "*" & keyword & "*" Then
     Set wb = Workbooks.Open(pathname & filename)
     Find_count_sum_in_file filename
     wb.Close SaveChanges:=True
   Else
     msgbox = "No file Found"
   End If
Loop

 End Sub

1 个答案:

答案 0 :(得分:1)

尝试以下内容(根据您的评论进行调整):

Private Const MAX_KWD = 5   ' use a constant to make sure everyone uses the same value

Sub Start_countries()
Dim keyword(1 To MAX_KWD), pathname As String

    'Keywords for first file search
    keyword(1) = "lol"
    keyword(2) = "rofl"
    keyword(3) = "lmfao"
    keyword(4) = "rotfl"
    pathname = "C:\XYZ1\"
    search_for_files keyword(), pathname

    'Keywords for second file search
    keyword(1) = "omg"
    keyword(2) = "fyi"
    keyword(3) = "ok"
    keyword(4) = "brb"
    pathname = "C:\XYZ2\"
    search_for_files keyword(), pathname

End Sub

Sub search_for_files(keyword(), pathname)
Dim filename As String, s As String
Dim i As Integer

    filename = Dir(pathname & "*.xls*")
    Do While InStr(filename, ".xls") <> 0
        s = LCase(filename)
        For i = 1 To MAX_KWD
            If (InStr(s, keyword(i)) > 0) Then Exit For ' found!
        Next i
        If (i <= MAX_KWD) Then
            Set WB = Workbooks.Open(pathname & filename)
            Find_count_sum_in_file filename
            WB.Close SaveChanges:=True
        Else
            MsgBox "No file Found"
        End If
        filename = Dir()
    Loop
End Sub

请注意,在Dim pathname, filename, s As String中,只有s被声明为String;所有其他声明为VariantAs String不适用于行上声明的所有变量。)

另请注意,在While filename <> "*.xls*"中,测试将是准确的,即它也会在*中查找星号(filename)。