Я хочу просмотреть все открытые книги Excel, чтобы определить, над какими из них выполнять операции.Проблема в том, что код выходит из цикла for после активной рабочей книги и возвращает «Ничего» в результате, независимо от того, сколько рабочих книг у меня открыто.
Мне нужно запускать эту подпрограмму еженедельно, чтобы перевести рабочие часы иззагрузил книгу Excel в альтернативную книгу.Имя файла меняется каждую неделю, но всегда начинается с «Расписания»
Я использовал эту процедуру каждую неделю с января по апрель без каких-либо проблем.Я попытался использовать это сегодня, и эта проблема возникла.Я использовал эту процедуру на нескольких разных компьютерах с разными операционными системами (Windows 7, Windows 10).
Я сохранил, закрыл и снова открыл книгу, которую хочу активировать, но безрезультатно.Я не хочу менять код каждую неделю, чтобы получить доступ к определенной книге, но использую первые 4 буквы в имени файла, чтобы определить файл, над которым нужно выполнить операции.
Sub cmdImportHours_Click()
Dim ThisWB As Workbook
Dim ImportWB As Workbook
Dim WB As Workbook
Dim msg1 As String
Dim msg As Variant
' more variables
msg1 = "Required file not found. Open the import file and try again."
Set ThisWB = ThisWorkbook
ThisWB.Worksheets("Hours").Activate
'The following loop exits after one iteration (the active workbook),
'regardless of how many workbooks are open
For Each WB In Workbooks
If Left(WB.Name, 4) = "Time" Then
WB.Activate
Exit For
End If
Next WB
If WB Is Nothing Then
msg = MsgBox(msg1, vbOKOnly)
Exit Sub
End If
'more code
End Sub
Я ожидаю, что цикл будет просматривать имя каждой открытой книги Excel, но выходит из цикла For Loop после просмотра только активной книги.