Макрос Vba запускается на домашнем компьютере и выдает ошибку 2147417848 на рабочем компьютере

#excel #vba #web-scraping #runtime-error

#excel #vba #очистка веб-страниц #время выполнения-ошибка

Вопрос:

С помощью форума я создал макрос, который подключается к сети моего банка, вводит имя пользователя и пароль и входит в мою учетную запись. Макрос копирует баланс счета и вставляет его в Excel.

На моем домашнем компьютере он работает без проблем. Однако рабочий компьютер не работает. На моем рабочем месте макрос открывает Веб, но не вводит пользователя или пароль. Он останавливается в строке, While. Busy Or.readyState <4 и появляется ошибка Runtime Error 2147417848 .

Я добавил «activobank.com » на надежные сайты Explorer, и ошибка следует.

Я проверил Explorer> Tools> Internet Options> Connections> LAN settings> Detect settings selected , и он выбран. На моем рабочем месте не запускаются прокси-скрипты.

Если я введу вручную в Internet Explorer без использования макроса и введу пользователя и пароль, я смогу войти без проблем.

В чем может быть проблема, если макрос работает на моем домашнем компьютере, а не на моем рабочем компьютере?

 'VBE > Tools > References:
' Microsoft Internet Controls
Public Sub SaldoActivo()
    Dim IE As InternetExplorer
    Set IE = New InternetExplorer

    With IE
        .Visible = True
        ‘Navigate first web
        .Navigate2 "https://www.activobank.com/cs/Satellite/BC/"
        While .Busy Or .readyState < 4: DoEvents: Wend
        .document.querySelector("[name=userDNI]").Value = "123456789"
        .document.querySelector("[name=pinNif]").Value = "123456789"
        .document.querySelector("#button1").Click
        While .Busy Or .readyState < 4: DoEvents: Wend
        ' Navigate second page
        .Navigate2 "https://www.activobank.com/activobank/CUGlobalPositionNew.init.bs"
        While .Busy Or .readyState < 4: DoEvents: Wend
    End With

‘Code to copy the account balance data
Application.Wait (Now   TimeValue("00:00:04"))

Cells(1, 1) = IE.document.getElementsByTagName("td")(39).innerText

IE.Quit
Set IE = Nothing

End Sub
  

Ответ №1:

Отладьте код и при возникновении ошибки проверьте, IE.hwnd возвращает ли он какое-либо значение. Если этого не происходит, то проблема в настройках безопасности вашего IE, afaik IE открывает новый браузер при переходе на веб-сайт, который находится в другой зоне безопасности (например, из локальной интрасети в Интернет). Попробуйте включить защищенный режим для обоих из них или / и установить одинаковый уровень безопасности.

/ e: Если ни одна из настроек, упомянутых в комментариях ниже, не имеет значения, создайте экземпляр Internet Explorer, работающий на среднем уровне целостности: Set IE = New InternetExplorerMedium

Комментарии:

1. Тот же ответ, который я собирался дать. 1. Вы также должны иметь возможность проверять настройки безопасности через ваш vba

2. Извините, у меня недостаточно знаний. Не могли бы вы дать мне пошаговые инструкции, чтобы сделать то, что вы просите?

3. @germangp какую часть вы не понимаете? При ошибке отладьте код и введите «?IE.hwnd» в немедленном окне, чтобы посмотреть, возвращает ли он какое-либо значение. Если этого не происходит, проблема в настройках безопасности браузера

4. Спасибо за ваше терпение, я мало что знаю о vba. Как только я выдал ошибку, я написал «? IE.hwnd» в немедленном окне. Открывается окно с сообщением об ошибке 462, серверный компьютер не существует или недоступен.

5. Верно, это хороший знак — это просто подтверждает, что есть проблема с настройками безопасности вашего браузера. Вы пытались установить флажок «Включить защищенный режим» в зонах «Интернет» и «Локальная интрасеть» на вкладке «Безопасность»?