2015-11-22 4 views
0

Я использую VBA excel для синтаксического анализа длинного списка локальных файлов .htm. Проблема в том, что я получаю ошибку даже до, программа начинает анализировать HTM-файлы.«Ошибка автоматизации во время выполнения -2147417848 (80010108)«

Ошибка:

enter image description here

VBA код:

<!-- language: lang-html --> 
Enum READYSTATE 
READYSTATE_UNINITIALIZED = 0 
READYSTATE_LOADING = 1 
READYSTATE_LOADED = 2 
READYSTATE_INTERACTIVE = 3 
READYSTATE_COMPLETE = 4 
End Enum 
Sub ImportHTM() 

    'Dim ie As InternetExplorer 
    Dim ie As InternetExplorerMedium 
    Dim html As HTMLDocument 

    Set ie = New InternetExplorerMedium 
    'Set ie = New InternetExplorer 
    ie.Visible = False 
    ie.navigate "d:\Cloud\Dropbox\3.htm" 

    Do While ie.READYSTATE <> READYSTATE_COMPLETE 
     Application.StatusBar = "Loading Profile..." 'PROBLEM SEEMS TO BE HERE SOMEWHERE! 
     DoEvents 
    Loop 
    Set html = ie.document 
    Set ie = Nothing 
    Application.StatusBar = "" 

'code code code --> which at this point isn't executed because the error occures before 

Есть ли у вас какие-либо идеи, что может вызвать проблемы? У вас есть предложения по решению?

Также команда:

ie.Visible = False

, кажется, не оказывают никакого влияния, так как он открывает HTM-файл в новом окне IE.

ответ

0

Переместить обновление строки состояния из цикла.

Application.StatusBar = "Loading Profile..." 
Do While ie.Busy Or ie.READYSTATE <> READYSTATE_COMPLETE 
    DoEvents 
Loop 
Application.StatusBar = vbNullString 

Там нет необходимости переписывать то же самое сообщение в Application.StatusBar property сотни, если не тысячи раз, пока вы ждете на странице загрузки.

Относительно нового окна Internet.Explorer ', не наследующего атрибут .Visible = False, я рекомендую вам переключиться на .Navigate2 и ShellWindows.

Приложение: не уничтожайте объект ie, пока не закончите с html, связанным с ie.document.

+0

Благодарим вас за консультацию. Я изменил код, но по-прежнему ту же ошибку ... Я думаю, что это имеет какое-то отношение к IE. Даже если я пытаюсь загрузить локальный HTM-файл, требуется некоторое время ... есть ли у вас какие-либо предложения по этому поводу? – user3185735

+0

tbh, в настоящее время я не упускаю [объект Internet.Explorer] (https://msdn.microsoft.com/en-us/library/aa752084 (v = vs.85) .aspx) rabbithole предпочитает объект [IXMLHTTPRequest] (https://msdn.microsoft.com/en-us/library/ms759148(v=vs.85).aspx). Поэтому, честно говоря, я могу только рекомендовать использовать XMLHTTP или открыть файл напрямую. – Jeeped

Смежные вопросы