2016-08-16 6 views
0

У меня есть цикл, который активирует определенный файл и копирует данные; он не работает, и я не понимаю, почему. Пожалуйста, смотрите ниже:Оператор VBA «Like» и подстановочный знак

For Each w In Workbooks 
    If w.Name Like "*File 1*" Then 
     Windows(w.Name).Activate 
     Sheets("Test").Range("C7:C15").Copy 
    End If 
Exit For 
Next w 

Подстановочный есть, потому что в реальности, каждую неделю имя файла изменится с «Файл 1 - week1» в «Файл 1 - week2», и так далее. Дело в том, что vode останавливается на аналогичной строке оператора, поэтому предполагая проблему с «Файл 1»?

Любая помощь очень ценится

+0

выглядит отлично. Если 'w.Name' не существует. –

+0

Если имя всегда «Файл 1 и т. Д.», то 'Like' должно быть' Like 'File 1 * "' удаление первого шаблона, иначе он ожидает что-то перед файлом 1 – DragonSamu

+0

Что такое сообщение об ошибке при остановке кода? (И вы должны предусмотреть удаление всех '.Activate' и других' .Select' в вашем коде, они обычно больше смутьяны, что иная вещь, см. Здесь [http://stackoverflow.com/questions/10714251/how-to -avoid-using-select-in-excel-vba-macros)) –

ответ

1

Одна проблема, как представляется вам выход после первой итерации. Из того, как вы описали проблему, похоже, что вы хотите прекратить поиск после того, как нашли совпадение, а не после первой попытки.

Просто переместите Exit For, как это:

For Each w In Workbooks 
    If w.Name Like "*File 1*" Then 
     Windows(w.Name).Activate 
     Sheets("Test").Range("C7:C15").Copy 
     Exit For 
    End If 
Next w 

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

  • Нет связанных вопросов^_^