У меня есть две книги в одной папке: bkOpenErrorTest.xlsm
и bkOpenErrorTest_dict.xlsm
.
bkOpenErrorTest_dict.xlsm
имеет следующий код в модуле ThisWorkbook
:
Private Sub workbook_open()
Dim dict As Dictionary
Set dict = New Dictionary
dict.Add 0, 0
dict.Add 0, 0
End Sub
Когда эта книга открывается двойным щелчком имени файла, она выдает ожидаемую необработанную ошибку:
This key is already associated with an element of this collection
bkOpenErrorTest.xlsm
имеет следующий код в Module1:
Sub testOpen()
Dim bk As Workbook
On Error GoTo errHandler
Workbooks.Open ThisWorkbook.Path & "\bkOpenErrorTest_dict.xlsm"
Exit Sub
errHandler:
Debug.Print "reached error handler"
End Sub
Когда для перехвата ошибок установлено значение Break on Unhandled Errors
, и я запускаю testOpen()
, необработанная ошибка по-прежнему возникает при открытии bkOpenErrorTest_dict.xlsm
. Почему ошибка не перехватывается обработчиком ошибок testOpen()
? И как мне справиться с этой ошибкой? У меня есть приложение, в котором я хотел бы просмотреть множество рабочих книг в папке с подобным кодом с ошибками в их событии workbook_open()
, и я не могу выполнить итерацию по ним, если программа аварийно завершает работу из-за необработанной ошибки, подобной этой.
bkOpenErrorTest_dict
, потому что он вылетает каждый раз, когда я его открываю. А учитывая, что в моем случае нужно перебирать сотни рабочих книг, ручное изменение кода нецелесообразно. 01.09.2018