Сбой IE.navigate2 в защищенном режиме - PullRequest
3 голосов
/ 02 августа 2011

Я автоматизирую IE8 из Excel VBA (Excel 2010, Windows 7)

Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate2 URL

Если URL-адрес веб-сайта в зоне, где включен защищенный режим IE, все в порядке.

Если URL - это веб-сайт в зоне, в которой отключен защищенный режим IE, сценарий завершается ошибкой (IE становится автоматически видимым, объект IE теряется в VBA - ошибка автоматизации).

Есть ли способ включить навигацию2 в зонах с отключенным защищенным режимом?

Ответы [ 2 ]

10 голосов
/ 02 августа 2011

То, что вы хотите сделать, это создать экземпляр IE, работающий со средней целостностью, и перемещаться по нему.Обычно это можно сделать с помощью CoCreateInstance (CLSID_InternetExplorerMedium).В настоящее время нет идентификатора ProgID, который указывает на этот CLSID, однако вы можете легко создать его:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\InternetExplorer.ApplicationMedium]

[HKEY_CLASSES_ROOT\InternetExplorer.ApplicationMedium\CLSID]
@="{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}"

Затем вы можете вызвать этот объект следующим образом:

CreateObject("InternetExplorer.ApplicationMedium")

Я немного объяснюболее подробно здесь: http://blogs.msdn.com/b/ieinternals/archive/2011/08/03/internet-explorer-automation-protected-mode-lcie-default-integrity-level-medium.aspx

8 голосов
/ 04 августа 2011

Получение InternetExplorer.ApplicationMedium по CLSID:

Set IE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...