2014-10-13 4 views
0

Я работаю по автоматизации Internet Explorer 9 с помощью Excel VBA, он выдает ошибку, когда я достигаю на последней строке ниже:метод «кадры» объекта «JScriptTypeInfo» не удалось

Set ie = CreateObject("InternetExplorer.Application") 
ie.Visible = True 
ie.navigate "https://example.com/Main.asp" 

'delay till readystate is complete 

Set doc = ie.document 
Set doc1 = doc.frames(2).document 'here comes the error 

может кто-нибудь, пожалуйста, помогите ?

+1

Удалить чрезмерный 'Set т.е. = New InternetExplorer', добавьте' Do Until IE.ReadyState = 4: DoEvents: Loop' после '.navigate'. Попробуйте найти необходимый кадр вручную в содержимом веб-страницы с помощью F12. – omegastripes

+0

На веб-странице действительно есть кадры. Я проверил с ** F12 ** – xameeramir

ответ

2

я Have сталкиваемся с таким же вопросом и получил решен

Это будет работать для IE 10+

не

Набор док = ie.document.frames

Набор doc1 = doc.frames (2)

Для элемента сценария, readyState больше не поддерживается. Начиная с Internet Explorer 11, используйте OnLoad

IE 11 has different ways to access attributes

1

У меня была такая же проблема с кодом Excel VBA после перехода на IE11. Это то, что я должен был сделать, чтобы исправить это:

старый код, который работал в IE8, но бросил ошибку в IE11

Set objCollection = IE.Document.frames(0).Document.getElementsByTagName("span") 

новый код, который работает в IE11 (я должен был добавить ссылку на Microsoft Библиотека объектов HTML под инструментами/ссылки)

Dim htmlDoc As MSHTML.HTMLDocument 
Dim htmlWindow As MSHTML.HTMLWindow2 
Set htmlDoc = IE.Document 
Set htmlWindow = htmlDoc.frames(0) 
Set objCollection = htmlWindow.Document.getElementsByTagName("span") 
+0

Спасибо, этот код работает? Он дает ошибку «отказ в доступе» – xameeramir