If CurrFile.Name = MyFile Then
Если MyFile
равно "*.xlsx"
, оператор сравнения =
правильно говорит: «Нет, не совпадает».
Вам нужно заменить этот оператор на оператор Like
с предупреждением о том, что вам понадобится литеральное выражение справа:
If CurrFile.Name Like "*.xlsx" Then
Это должно работать как задумано ... до этой части:
Workbooks.Open(subfolders.Path & "\" & MyFile)
Вы, вероятно, хотите использовать CurrFile
там (Workbooks.Open
не ожидает подстановочного знака в имени файла там) ... но это странно и неоднозначно:
For Each CurrFile In CurrFile
Не делай этого. Вместо этого объявите новую переменную или измените существующую в той же области. То же самое здесь:
For Each subfolders In subfolders
Вы хотите For Each subFolder In subFolders
, затем For Each currFile In currFiles
, может быть - или лучше:
With New FileSystemObject ' reference Microsoft Scripting Runtime library
Dim root As Folder
Set root = .GetFolder("C:\Users\pp87255\Desktop\JNav Rest\05.23.2019")
Dim subFolder As Folder
For Each subFolder In root.SubFolders
Dim currentFolder As Folder
For Each currentFolder In subFolder.SubFolders
Dim currentFile As File
For Each currentFile In currentFolder.Files
If currentFile.Name Like "*.xlsx" Then
Dim wb As Workbook
Set wb = Application.Workbooks.Open(currentFile.Path)
'...
End If
Next
Next
Next
End With
Работать с поздним связыванием сложно, если вы не знакомы с задействованными библиотеками. Хорошей новостью является то, что нет никаких причин для позднего связывания библиотеки Scripting
(это та же самая версия на каждом Windows-боксе, когда-либо созданном в этом веке) - так что перейдите в «Инструменты»> «Ссылки» и проверьте библиотеку «Среда выполнения сценариев Microsoft».