IE .LocationURL возвращает ошибку, когда URL не разрешен - PullRequest
0 голосов
/ 09 января 2020

У меня есть базовый c VBA-скрипт, который открывает окно InternetExplorer, чтобы пользователь мог авторизовать соединение OAuth2.0. В рамках этого процесса их браузер перенаправляется на адрес обратного вызова, содержащий маркер доступа. В настоящее время URL-адрес перенаправления установлен на http://localhost.

. Сценарий правильно работает на Windows 10 с MS Access 2010 и Inte rnet Explorer 11. Однако в MS Access 2016 на другой Win 10 P C, я получаю сообщение об ошибке -2147023179 Automation error The interface is unknown.. Я подтвердил, что URL-адрес перенаправления является правильным, и я также жестко запрограммировал разрешаемый URL-адрес перенаправления, который также работает.

Похоже, что когда InternetExplorer обнаруживает неразрешимый URL-адрес, он разрывает соединение VBA с экземпляром IE. Я ищу информацию, которая поможет мне обойти эту проблему.

Код, который я использую ниже:

Dim IE as InternetExplorer

' create IE instance
Set IE = CreateObject("InternetExplorer.Application")

Dim url as String: url = "www.some-website.com"

' show IE
IE.Visible = True

' navigate to OAuth authorize URl
IE.Navigate url

' wait for page to load
Do While IE.ReadyState = 4: DoEvents: Loop

' loop until callback url in address bar
' ERROR HAPPENS HERE
While InStr(1, IE.LocationURL, "http://localhost") <= 0
    DoEvents
Wend

1 Ответ

1 голос
/ 09 января 2020

Попробуйте использовать InternetExplorerMedium объект вместо InternetExplorer объект. Более подробную информацию можно найти по следующим ссылкам:

Управление Excel VBA IE локальный int anet

При использовании объекта InternetExplorerMedium может потребоваться добавить ссылку на Microsoft Inte rnet Controls, вы можете проверить эту ссылку:

Как добавить ссылки VBA - Inte rnet Controls, HTML Object Library

...