Доброго времени суток!!! Обрабатываю много книг, думал открывать по очереди книгу,выполнять макрос и закрывать. В ручном режиме (если сидеть и держать кнопку F8 миллион раз) все получается. а если запустить автоматически, то книги не успевают открываться, а макрос уже выполняется. Как выйти из такой ситуации? На ум только приходят ручные паузы или открытие всех книг сразу и потом уже обработка.
Показать код, и обрабатываемый файл (думаю они все однотипные). Нет одного правильного решения, в каждом конкретном случае, что то работает лучше, что то хуже.
думал открывать по очереди книгу,выполнять макрос и закрывать
Так и делайте. Все книги собрать в одну папку и командой Dir пройдитесь по всем файлам в папке. В цикле открываете очередную книгу, выполняете макрос, закрываете книгу.
For Each file In coll 'коллекция книг
name = Split(Split(file, "\")(UBound(Split(file, "\"))), ".")(0) 'извлекаем только название книги
i=i+1
Call openfile 'открываем файл
lLastRow = Workbooks(name).Worksheets("Worksheet").Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To lLastRow
If word(Workbooks(name).Worksheets("Worksheet").Cells(j, 3), name) Then ' проверяем если слово такое как название книги
sumcount = sumcount + 1
ThisWorkbook.Worksheets("Лист1").Cells(sumcount, 3) = Workbooks(name).Worksheets("Worksheet").Cells(j, 3)
End If
Next
Workbooks(name).Close
Next
Не вижу что там в коллекции, но представим что полные имена файлов:
Код
For Each file In coll 'коллекция книг
With Workbooks.Open(file)
lLastRow = .Worksheets("Worksheet").Cells(.Worksheets("Worksheet").Rows.Count, 1).End(xlUp).Row
For j = 2 To lLastRow
If word(.Worksheets("Worksheet").Cells(j, 3), .Name) Then ' проверяем если слово такое как название книги
sumcount = sumcount + 1
ThisWorkbook.Worksheets("Лист1").Cells(sumcount, 3) = .Worksheets("Worksheet").Cells(j, 3)
End If
Next
.Close 0
End With
Next