我正在尋找一些幫助來編寫一個宏來搜索我的計算機中的文件夾,以查看文件夾中的任何文件是否包含指定的關鍵字,然後將文件名,路徑和上次修改日期返回到Excel工作表。Excel宏來搜索文件夾並返回包含特定關鍵字和最新版本的文件
REF FolderPath REF FileName LastModified FilePath
Apple C:\Fruits
Kale C:\Vegetables
Spinach C:\Vegetables
例如(見上文),
我將在列A和B稱爲「水果」的文件夾的關鍵字和文件夾路徑包含名爲「Apple_v5.xls」文件。因此,我希望宏搜索關鍵字「Apple」,然後將名稱,最新版本和文件路徑(Col D,E,F)返回到同一電子表格。 Col C將在Col A.中再次列出他們的關鍵詞。Macro也將繼續沿着關鍵詞列表走下去,直到它結束。
這是我在互聯網上研究之後迄今爲止,但它沒有工作出於某種原因。請幫忙!謝謝!
Private Sub CommandButton1_Click()
Dim sh As Worksheet, rng As Range, lr As Long, fPath As String
Set sh = Sheets("Sheet2")
lstRw = sh.Cells.Find(What:="*", After:=sh.Range("A1"), LookAt:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row
Set rng = sh.Range("A2:A" & lstRw)
For i = 1 To 100
fPath = Sheets("Sheet2").Range("B" & i).Value
If Right(fPath, 1) <> "\" Then
fPath = fPath & "\"
End If
fWb = Dir(fPath & "*.*")
x = 2
Do While fWb <> ""
For Each c In rng
If InStr(LCase(fWb), LCase(c.Value)) > 0 Then
Worksheets("Sheet2").Range("C" & x) = fWb
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(fWb)
Worksheets("Sheet2").Range("E" & x) = f.DateLastModified
Worksheets("Sheet2").Range("F" & x) = f.Path
Worksheets("sheet2").Range("D" & x) = c.Value
Worksheets("sheet2").Hyperlinks.Add Anchor:=Worksheets("sheet2").Cells(x, 2), Address:=f.Path
Columns("A:D").AutoFit
Set fs = Nothing
Set f = Nothing
x = x + 1
End If
Next
fWb = Dir
Loop
Set sh = Nothing
Set rng = Nothing
Next i
Sheets("Sheet2").Activate
End Sub
我做了上述改變,但它沒有奏效。現在它只是抓取文件夾中的所有文件並忽略我的關鍵字。你知道爲什麼會發生這種情況嗎? – Futochan
我重寫了我的答案,因爲有更多的需求,而不僅僅是我之前提供的更新。編輯的答案現在涵蓋了一切 – Jaycal