Страница 1 из 1
Почему не срабатывает исключение?
Добавлено: 08 май 2009, 08:05
Ivan093
Привет всем!
Есть код, где в цикле открываются файлы, но бывает что файл открыть не получается, тогда нужно его пропустить. Написал примерно так
On Error GoTo L1
Workbooks.Open (Files(n)), UpdateLinks:=0
<Действия с файлом>
L1:
Но эксель все равно выкидывает окошко, если не может открыть файл.
Подскажите, пожалуйста, как сделать, чтобы эксель просто пропускал файл.
Re: Почему не срабатывает исключение?
Добавлено: 08 май 2009, 10:09
Naeel Maqsudov
Хм, действительно не срабатывает...
Попробовал так:
Код: Выделить всё
For i = 1 To 10
On Error GoTo L1
Workbooks.Open "qweqwe", UpdateLinks:=0
'something
L1:
On Error GoTo 0
Next
потом так
Код: Выделить всё
On Error GoTo L1
For i = 1 To 10
Workbooks.Open "qweqwe", UpdateLinks:=0
'something
L1:
Next
Одинаково. В результате на первой итерации проходит обработка исключения, а на второй итерации не проходит.
Т.е. если это стоит в цикле то после первой итерации перестает работать...
Странно....
PS
Excel 2003.
Re: Почему не срабатывает исключение?
Добавлено: 08 май 2009, 10:34
Ivan093
Сделал так, работает как надо:
On Error Resume Next
Workbooks.Open (Files(n)), UpdateLinks:=0
If Err.Number = 0 Then
On Error GoTo L1
<Действия с файлом>
End If
L1:
Err.Clear
On Error GoTo 0
Re: Почему не срабатывает исключение?
Добавлено: 08 май 2009, 10:37
Naeel Maqsudov
Хорошо...
Но вопрос темы остался открытым: "почему"...
Re: Почему не срабатывает исключение?
Добавлено: 08 май 2009, 10:38
Aent
Так будет работать
Код: Выделить всё
Public Sub test()
Dim i As Integer
On Error Resume Next
For i = 1 To 10
Workbooks.Open "qweqwe", UpdateLinks:=0
If Err <> 0 Then
Debug.Print "Ошибка"
Err.Clear
Else
Debug.Print "OK"
End If
Next i
End Sub
Re: Почему не срабатывает исключение?
Добавлено: 08 май 2009, 10:44
Naeel Maqsudov
A! Err.Clear надо делать!
Поэтому и не работало со второй итерации.
Re: Почему не срабатывает исключение?
Добавлено: 08 май 2009, 11:06
Aent
Да нет. Не всё так просто.
в конструкции
Код: Выделить всё
Public Sub test()
Dim i As Integer
For i = 1 To 10
On Error GoTo L
Workbooks.Open "qweqwe" & Str(i), UpdateLinks:=0
GoTo NXT
L: Debug.Print "Ошибка " & Str(i)
Err.Clear
NXT:
Next i
End Sub
Err.clear не спасает

Похоже ошибка реализации