Я ищу некоторую помощь в написании макроса, который будет искать папку на моем компьютере, чтобы узнать, содержит ли какой-либо из файлов в папке указанное ключевое слово , затем верните имя файла, путь и последнюю измененную дату на листе excel.Excel Macro для поиска папок и возвратных файлов, содержащих определенное ключевое слово и самую последнюю версию
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