Ошибка выполнения VBA 13: несоответствие типов при вызове функции с HTMLDocument в качестве аргумента

Приведенный ниже код отлично работает на одной машине и возвращает ошибку на второй при вызове функции с двумя параметрами (при вызове с одним параметром она работает нормально). Функция находится в другом модуле. Кто-нибудь может дать мне совет, что может быть не так с этим?

На обеих машинах работает Excel 2016 и IE11.

Dim ie As InternetExplorer
Dim htmlDoc As MSHTML.HTMLDocument
Set ie = New InternetExplorerMedium
With ie
    .Silent = True
    .navigate serverURL 'URL as string
    .Visible = False
End With

Set htmlDoc = ie.document

Call WaitForLoad(ie) 'this works fine

For Each htmlElement In htmlDoc.getElementsByTagName("input")
   If htmlElement.Type = "submit" Then htmlElement.Click: Exit For
Next

Call WaitForLoad(ie, htmlDoc) 'this returns Run-time error 13: Type mismatch

Функции:

Public Function WaitForLoad(browser As InternetExplorer, _
                        Optional ByVal doc1 As MSHTML.HTMLDocument, _
                        Optional ByVal doc2 As MSHTML.HTMLDocument) _
                        As Variant

If Not browser Is Nothing Then
    Call LoadTimeoutSettings
    Do
        DoEvents
    Loop Until (browser.readyState = READYSTATE_COMPLETE) Or (Now > StopTime)
End If

If Not doc1 Is Nothing Then
    Call LoadTimeoutSettings
    Do
        DoEvents
    Loop Until (doc1.readyState = "complete") Or (Now > StopTime)
End If

If Not doc2 Is Nothing Then
    Call LoadTimeoutSettings
    Do
        DoEvents
    Loop Until (doc2.readyState = "complete") Or (Now > StopTime)
End If
End function


Function LoadTimeoutSettings()
StartTime = Now
StopTime = StartTime + TimeValue(TimeOut) 'TimeOut="00:00:15"
End Function

0 ответов

Другие вопросы по тегам