Обработка ошибок при выполнении Workbooks.Open

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Анна57
Сообщения: 3
Зарегистрирован: 25 мар 2009, 06:22

25 мар 2009, 06:28

Есть максрос, который экспортирует данные из интернет, примерно такой:

...
filepathname = адрес с которого скачиваем
Workbooks.Open Filename:=filepathname
...

Хочется как-то сделать так, чтобы при отсутствии подключения к интернет, он не ругался, а тихо сворачивал свою работу, ничего не скачивая. Подскажите, пожалуйста, как это сделать?

Заранее спасибо!
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

25 мар 2009, 09:11

Самый простой способ проигнорироватиь ошибку это
on error resume next

Код: Выделить всё

...
filepathname = адрес с которого скачиваем
on error resume next
Workbooks.Open Filename:=filepathname
on error resume 0
...
На время выполнения опасного оператора(ов) включаем игнорирование ошибок, а потом выкобчаем

Можно сообщения об ошибке вывести "тихо" - с статусную строку. Тогда понадобится полноценный (насколько это возможно в VB/VBA) обработчик ошибок

Код: Выделить всё

  ...
  on error goto not_available
  filepathname = адрес с которого скачиваем
  Workbooks.Open Filename:=filepathname
  Application.StatusBar = False
  on error goto 0
  goto skip_handler
not_available:
  Application.StatusBar = Err.Description
skip_handler:
  ...
Есть и другие варианты.
Анна57
Сообщения: 3
Зарегистрирован: 25 мар 2009, 06:22

25 мар 2009, 09:57

Спасибо! Буду пробовать.
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

27 мар 2009, 12:24

;)

Код: Выделить всё

 

Dim sURL As String
Dim objHttp As Object
Dim sHtmlCode As String

On Error Resume Next
    Set objHttp = CreateObject("MSXML2.XMLHTTP.3.0")

f Err.Number <> 0 Then
        Err.Clear
        Set objHttp = CreateObject("MSXML2.XMLHTTP")
        If Err.Number <> 0 Then
            Set objHttp = CreateObject("MSXML.XMLHTTPRequest")
        End If
    End If
    
    If objHttp Is Nothing Then
        MsgBox "Невозможно создать объект для подключения к интернет!", 48, "Ошибка"
        Exit Sub
    End If
    
    If objHttp Is Nothing Then Exit Sub
    
    objHttp.Open "GET", sURL, False
    
    On Error Resume Next
    objHttp.Send
    If Err.Number <> 0 Then
        MsgBox "Отсутствует доступ в интернет!", 48, "Ошибка"
        Exit Sub
    End If
    On Error GoTo 0
    
    sHtmlCode = objHttp.responseText
    
    Set objHttp = Nothing 

С уважением...

P.S - код от Pavlel55
GeorgeSoca
Сообщения: 0
Зарегистрирован: 12 окт 2015, 04:09
Откуда: Guam
Контактная информация:

15 окт 2015, 00:22

Pa vart webbhotell kan ni kanna er trygg! Forutom att vi anvander oss av speglade harddiskar pa alla vara servrar sa tar vi aven backup tva ganger per dygn pa separata servrar. Vi anvander oss av ISPmanager som kontrollpanel. ISPmanager ar en kontrollpanel som gor det enkelt att administrera sin hemsida. Hos oss kan ni lagga hur manga hemsidor och domaner ni onskar under ett webbhotellskonto.
virtual hosting
Ответить