Я пытаюсь создать макрос, который перечисляет все файлы в данной папке (и ее подпапках), которые соответствуют критериям для имени файла (в моем примере " job checklist ") и типа (в мой пример "* .xlsm"). Поскольку все рабочие книги этого типа и соглашения об именах в моей папке поиска относятся к одному и тому же типу, мне нужно открывать и считывать значения из каждой рабочей книги и копировать их в мою рабочую книгу. при запуске макроса в рабочей книге хоста должна быть отмечена дата / время выполнения, чтобы при последующем запуске макроса только новые рабочие книги ИЛИ рабочие книги, которые были изменены с момента открытия самой последней отметки времени и обновления на хосте Учебное пособие.
Я пытался использовать некоторый рекурсивный код, найденный в других сообщениях, но темы, но мне трудно включить критерии поиска:
- имя файла
- тип файла
- дата изменения
[здесь] ( макрос VBA, который ищет файл в нескольких подпапках )
Я также пытался внедрить код из Pearson здесь , чтобы позволить мне проверить атрибуты файлов в файлах xls, но, похоже, он не работает (возможно, из-за 64-битной версии, хотя я нашел другую версию, которая должна была быть совместимым)
Я пытался найти решение в течение нескольких дней, но я немного застрял, любая помощь будет признательна.
рабочий код, который у меня есть, который перечисляет все файлы типа .zip в моей рабочей книге хоста, я не знаю, как проверить дату изменения файла. я предполагаю, что если бы я мог, я мог бы добавить некоторый код для открытия файлов (которые соответствуют типу, имени и изменены (по сравнению с ячейкой значения даты / времени в рабочей книге хоста и обновляются каждый раз при запуске макроса), а затем извлекать значения из известный лист / диапазон в рабочей книге хоста.
```vba
Sub MainList()
Dim folder, xdir As Variant
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
Call ListFilesInFolder("C:\Users\60066690\Desktop\Documents from BCP and loose MTC", True)
End Sub
Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
For Each xFile In xFolder.Files
If Not InStr(1, xFile.Name, ".zip") = 0 Then
'could need to add in here If for name, but not sure how to add If for modified date, if i could i could compare the modified date to a date cell in this workbook
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
'need to add some code in here to open the found workbook, then extract some values from known sheets/cells, store those values in variables, then close the found workbook and output the found variables to the colums beside the file name
rowIndex = rowIndex + 1
End If
Next xFile
If xIsSubfolders Then
For Each xSubFolder In xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, True
Next xSubFolder
End If
Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub
```