使用VBAlogin到安全的https网站

我试图通过VBA脚本自动login到我的银行帐户,并从网站返回一些数据自动化我的日常任务。 但是,我不能写这样的macros可以login到这个网站 – https://online.mbank.pl/pl/Login 。

我写了下面的macros,它适用于“正常”的网站,如谷歌(基于input框ID),但不适用于银行网站返回,以下错误:

运行时错误424:需要的对象

在这里输入图像说明

google.com以下代码:

Sub LoginHttps() Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") With IE .Top = 0 .Left = 0 .Height = 1000 .Width = 1250 .Visible = True .Navigate "https://www.google.com/?gfe_rd=cr&ei=N-TZVaPMAdCv8wf19aH4Bw&gws_rd=cr&fg=1" Do While .Busy Or Not .ReadyState = 4: DoEvents: Loop .Document.getElementById("lst-ib").Value = "input" End With End Sub 

并为银行网站的代码产生了424错误:

 Sub LoginHttps() Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") With IE .Top = 0 .Left = 0 .Height = 1000 .Width = 1250 .Visible = True .Navigate "https://online.mbank.pl/pl/Login" Do While .Busy Or Not .ReadyState = 4: DoEvents: Loop .Document.getElementById("userID").Value = "input" End With End Sub 

我想知道是否有任何方法通过VBA访问这些input框或银行程序员的安全。

这里有三个顺序的检查:首先Do ... Loop是通常的IE状态检查,第二个文件完整性检查,和第三个目标元素检查,当目标节点没有准备好时返回Null (而不是HTMLInputElement ) 。

 Sub LoginHttps() Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") With IE .Top = 0 .Left = 0 .Height = 1000 .Width = 1250 .Visible = True .Navigate "https://online.mbank.pl/pl/Login" Do While .Busy Or Not .readyState = 4: DoEvents: Loop Do Until .document.readyState = "complete": DoEvents: Loop Do While TypeName(.document.getElementById("userID")) = "Null": DoEvents: Loop .document.getElementById("userID").Value = "input" End With End Sub 

看来,IE浏览器正在加载整个页面之前返回“就绪”状态。 该网站可能使用AJAX来加载额外的内容或做某种redirect。 尝试添加一个小的延迟,然后检查页面是否准备就绪。 例如:

 .Navigate "https://online.mbank.pl/pl/Login" ' Small delay... Application.Wait Now + TimeValue("00:00:02") Do While .Busy Or Not .ReadyState = 4: DoEvents: Loop .Document.getElementById("userID").Value = "input" 

这对我有效。