Страницы: 1
RSS
Ошибка Run-time error '91' при чтении XML файла из интернета
 
Всем привет!
Опять непонятные вещи происходят в моем коде!
Есть небольшая процедура, которая считывает XML файл из интернета и берёт из него тексты из 2ух узлов.
Самое интересное в том, что когда я запускаю процедуру, на строке Debug.Print.... выскакивает ошибка Run-time error '91'/
НО! при этом если выполнять процедуру по шагам, то всё работает идеально!
А если этот XML файл положить на рабочий стол, то процедура работает без ошибки.
Признаться, c принципами работы c XML в VBA я знакомлюсь всего второй день, но мне сложных конструкций в этой части и не нужно знать. Меня заботит сам факт, что код отлично выполняется в режиме отладки, но выдает ошибку при выполнении процедуры. Как такое может быть?
Код
Sub textXML()

Dim strXML As String
Dim objXML As Object

    strXML = "http://XXX.ru/TestXMLFile.xml"
    Set objXML = CreateObject("MSXML2.DOMDocument")
    
    If Not objXML.Load(strXML) Then  'strXML is the string with XML'
        Err.Raise objXML.parseError.ErrorCode, , objXML.parseError.reason
    End If

    Debug.Print objXML.LastChild.SelectSingleNode("Node1").Text
    Debug.Print objXML.LastChild.SelectSingleNode("Node2").Text
    
    Set objXML = Nothing
End Sub
 
JerkRandy, при чтении XML, тем более из сети, содержимое загружаться медленнее, чем срабатывает макрос. Почитайте про MSXML2 (на память не помню), там есть опция, которую в коде надо активировать, чтобы макрос дождался загрузки файла.
Если ошибаюсь, то прошу меня поправить.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, Звучит правдоподобно. Попробую порыть в этом направлении!
 
Да, Всё верно!
Нужно просто добавить строку перед оператором Load
objXML.async = False
Спасибо, JayBhagavan, !
 
JerkRandy, пожалуйста.
Почитайте на всякий случай.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, Спасибо! я искал что-то такое ,понятное, но не нашёл.
Страницы: 1
Наверх