2015-06-23 3 views
1

Я пытаюсь найти файлы с определенным текстом в имени файла и запускать макрос только для них. Все фантастически, но оператор IF, который должен выбрать определенные файлы, не оценивает правильно. Я могу видеть имя файла, хранящегося в переменной, я даже пытался преобразовать переменную из варианта в строку, но оператор IF, похоже, не читает имя. Он запускает макрос для всех файлов в папке.Оператор IF не оценивается правильно excel 2010 vba


Function Recurse(sPath As String) As String 

    Dim FSO As New FileSystemObject 
    Dim myFolder As Folder 
    Dim mySubFolder As Folder 
    Dim myFile As Variant 
    Dim file As String 

    Set myFolder = FSO.GetFolder(sPath) 

    For Each mySubFolder In myFolder.SubFolders 
     For Each myFile In mySubFolder.Files 

      file = myFile.Name 

      If file <> "*CONSOLIDATED SUMMARY.xls*" Then 
       Application.Workbooks.Open fileName:=myFile 
       Call UnmergeAndResize 
       ActiveWorkbook.Close SaveChanges:=True 
      End If 
     Next 
     Recurse = Recurse(mySubFolder.path) 
    Next 

End Function 
+0

http://stackoverflow.com/questions/23087446/excel-vba-wildcard-search –

ответ

1

Вы не можете использовать * характер для выполнения частичного совпадения строки в VBA.

Вместо этого, вы должны заменить строку, содержащую If заявление с:

If InStr(file, "CONSOLIDATED SUMMARY.xls") = 0 Then 
+0

Спасибо - что это сделал! –

+0

Если это решает вашу проблему, было бы очень полезно, если бы вы могли отметить ответ как принятый. –

Смежные вопросы