Автоматизируйте VBA для загрузки IE и ввода учетных данных на экране входа - PullRequest
1 голос
/ 04 октября 2019

Я действительно борюсь с этим, и я не могу заставить это работать. Я хочу многое сделать с помощью автоматизации через VBA, но я застрял на первом препятствии.

Вот мой код, он должен быть понятен;

Sub login()

Const Url$ = "(INTERNAL INTRANET WORK SITE I CANNOT SHARE)"

Dim UserName As String, Password As String
UserName = "TEST"
Password = "Password"

Dim ie As Object
Set ie = New InternetExplorerMedium

With ie

    .navigate Url
    .Visible = True
    Application.Wait (Now + TimeValue("00:00:02"))

    Dim oLogin As Object, oPassword As Object
    Set oLogin = .document.getElementsByName("username")(0)
    Set oPassword = .document.getElementsByName("password")(0)

    oLogin.Value = UserName
    oPassword.Value = Password
    .document.forms(0).Submit

End With
End Sub 

Вот HTML:

<TD background=/frontend/images/greenback.gif width=302><INPUT maxLength=32 value="" name=username> </TD> 

<TD background=/frontend/images/greenback.gif width=302><INPUT maxLength=32 type=password value="" name=password> </TD>

<TD background=/frontend/images/greenback.gif width=302><INPUT type=submit value="Login now" name=submit> </TD>

Теоретически это должно работать правильно? Я получаю сообщение об ошибке:

Set oLogin = .document.getElementsByName("username")(0)

Сообщение об ошибке: Ошибка выполнения 462: компьютер удаленного сервера не существует или недоступен

ЛюбойИдеи? IE версии 11.737.17763.0 Excel 2016 Ссылочные элементы управления Microsoft Internet в VBA

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Проблема в настройках IE. Когда вы перемещаетесь между различными зонами безопасности, IE открывает новый экземпляр браузера, поэтому в качестве потребителя вы теряете объект IE. Вы можете проверить его, проверив объект ie при отладке кода, используя immidiate windown и набрав ?ie, после .navigate Url 1005 *

это будет nothing См. Мой ответ на другой вопрос, решение точното же самое: нажмите

0 голосов
/ 04 октября 2019

не уверен, где может быть ваша проблема. сначала я не знаю, что это такое:

Set ie = New InternetExplorerMedium

, но когда я запускаю ваш код, я заменяю вышеприведенную часть на:

Set ie = CreateObject("InternetExplorer.Application")

и запускаю ее со страницей "mail". centrum.cz "(обратите внимание, что" username "находится на упомянутой странице" ego_user ", а" password "-" ego_secret "), тогда это работает ...

EDIT: попробуйте комментарий Даниэля ниже .. попробуйте использовать мое предложение с «CreateObject» и добавьте его с частью Даниэля:

While ie.Busy Or ie.ReadyState <> 4: DoEvents: Wend

после «Application.Wait»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...