MSHTML.HTMLElementCollection类型不匹配错误

MSHTML.HTMLElementCollection类型不匹配错误,html,excel,vba,web-scraping,Html,Excel,Vba,Web Scraping,我正在创建一个脚本代码以将数据复制到Excel。我的代码工作正常,直到找到我得到的元素错误类型不匹配 Function Login(ID As String, Pass As String) As Boolean Dim objIE As SHDocVw.InternetExplorer Dim ieDoc As MSHTML.HTMLDocument Dim UserID As MSHTML.HTMLInputElement Dim passwordID As MSHTML.HTM

我正在创建一个脚本代码以将数据复制到Excel。我的代码工作正常,直到找到我得到的元素错误
类型不匹配

Function Login(ID As String, Pass As String) As Boolean
 Dim objIE As SHDocVw.InternetExplorer
 Dim ieDoc As MSHTML.HTMLDocument
 
 Dim UserID As MSHTML.HTMLInputElement
 Dim passwordID As MSHTML.HTMLInputElement
 Dim loginb As MSHTML.HTMLInputElement
 Dim AllHyperlinks As MSHTML.HTMLElementCollection
 Dim hyper_link As MSHTML.HTMLInputElement
 Dim link As Object
    
 Set objIE = New SHDocVw.InternetExplorer
 objIE.navigate URLstr
 
 Do Until objIE.readyState = READYSTATE_COMPLETE
 Loop
 
 Set ieDoc = objIE.document
 objIE.Visible = True
 
 Application.Wait Now() + #12:00:02 AM#
 Set UserID = ieDoc.all.Item("login/")
 UserID.Value = ID
 Application.Wait Now() + #12:00:02 AM#
 Set passwordID = ieDoc.all.Item("password")
 passwordID.Value = Pass
 Application.Wait Now() + #12:00:01 AM#
 Set loginb = ieDoc.getElementsByClassName("button")(0)
 loginb.Click
 Do Until objIE.readyState = READYSTATE_COMPLETE
 Loop
 Application.Wait Now() + #12:00:02 AM#
  
 Set AllHyperlinks = ieDoc.getElementsByTagName("A") 'here i Got Error
 For Each hyper_link In AllHyperlinks
     If hyper_link.innerText = "search" Then
         hyper_link.Click
         Exit For
     End If
 Next
 
 Set objIE = Nothing
End Function
HTML


搜寻

更换代码块:

 Set AllHyperlinks = ieDoc.getElementsByTagName("A") 'here i Got Error
 For Each hyper_link In AllHyperlinks
     If hyper_link.innerText = "search" Then
         hyper_link.Click
         Exit For
     End If
 Next
反对:

ieDoc.getElementByID("button_search").Click

您可以为您的问题添加更多详细信息吗?登录后页面中按钮的标记HTML代码是您在父iframe/frame中的元素吗?现在我得到了错误对象变量或未设置块变量,但页面未完全加载或HTML来自另一个页面。登录后重新加载此页面可以将控制台发送到此页面吗??
objIE.readyState=readyState\u COMPLETE
不要工作两次。您必须以另一种方式等待第二次完全加载页面。通过手动中断
应用程序。Wait…
或循环等待加载页面上的特定html元素。代码中的大部分
Application.Wait…
可能不需要。
ieDoc.getElementByID("button_search").Click