Привет всем!
Есть код, где в цикле открываются файлы, но бывает что файл открыть не получается, тогда нужно его пропустить. Написал примерно так
On Error GoTo L1
Workbooks.Open (Files(n)), UpdateLinks:=0
<Действия с файлом>
L1:
Но эксель все равно выкидывает окошко, если не может открыть файл.
Подскажите, пожалуйста, как сделать, чтобы эксель просто пропускал файл.
Почему не срабатывает исключение?
Модератор: Naeel Maqsudov
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Хм, действительно не срабатывает...
Попробовал так:
потом так
Одинаково. В результате на первой итерации проходит обработка исключения, а на второй итерации не проходит.
Т.е. если это стоит в цикле то после первой итерации перестает работать...
Странно....
PS
Excel 2003.
Попробовал так:
Код: Выделить всё
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.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Хорошо...
Но вопрос темы остался открытым: "почему"...
Но вопрос темы остался открытым: "почему"...
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Так будет работать
Код: Выделить всё
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
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
A! Err.Clear надо делать!
Поэтому и не работало со второй итерации.
Поэтому и не работало со второй итерации.
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Да нет. Не всё так просто.
в конструкции
Err.clear не спасает 
Похоже ошибка реализации
в конструкции
Код: Выделить всё
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

Похоже ошибка реализации
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com