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