我有一个关于debug.print的问题虽然我激活了Window(STR + G)debug.print,但未显示。为什么要查看调试打印结果?所以..我想找出必须使用VBA代码触发的按钮。就我而言,我有3个选项搜索,新搜索,返回或登录对于登录,我找到了另一个Web侧面SubLog的解决方案Sub TestLogin()昏暗...昏暗LoginForm为MSHTML.HTMLFormElement ..代码LoginForm.submit
在特定情况下,代码几乎相同
Sub Get()Dim ... Dim HTML Button as MSHTML.IHTMLELEMENT ...代码
[Set Buttons = HTMLDoc.GetElementsByTagName(“ button”)对于HTMLButtons中的每个HTMLButton Debug.Print HTMLButton.className,HTMLButton.tagName,HTMLButton.Id,HTMLButton.innerText下一个按钮
结束子
在这种情况下,代码一直运行到Set Buttons = HTMLDoc.GetElementsByTagName(“ button”)行,然后跳转到End Sub]
这里是我的代码和带有VBA触发按钮的Web端源代码
Sub Search()
Dim IE As New SHDocVw.InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLButtons As MSHTML.IHTMLElementCollection
Dim HTMLButton As MSHTML.IHTMLElement
Dim HTMLInput As MSHTML.IHTMLElement
Dim HTMLElement As Object
Dim UserNameInput As MSHTML.HTMLInputElement
Dim VornameInput As MSHTML.HTMLInputElement
Set IE = New SHDocVw.InternetExplorer
Set IE = CreateObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
IE.Visible = True
IE.Navigate Tabelle1.Range("B1").Text
Do While IE.ReadyState <> READYSSTATE_COMPLETE And IE.Busy
Loop
Set HTMLDoc = IE.Document
Application.Wait (Now + TimeValue("0:00:1"))
Set HTMLInput = HTMLDoc.getElementById("sur")
HTMLInput.Value = "HI"
Set HTMLInput = HTMLDoc.getElementById("given")
HTMLInput.Value = "Low"
Application.Wait (Now + TimeValue("0:00:1"))
Stop
Here I tried the Debug.Print .. But it does not work
For Each HTMLButtons In HTMLDoc
Debug.Print HTMLButton.className, HTMLButton.tagName, HTMLButton.ID, HTMLButton.innerText
Next IHTMLButton
Than I tried This code.. and it also does not work
Set HTMLButtons = HTMLDoc.getElementsByTagName("btn")
Set HTMLButtons = HTMLDoc.getElementsByClass("urTxtStd").Value("Suchen")
HTMLButton.Click
End Sub
这里是来自网络端的源代码我有3个按钮
搜索新搜寻返回
<table id="btn" onclick="triggerDetailedSearch();" cellspacing="0"><tbody><tr style="vertical-align: bottom;"><td class="tl o"><td class="tr o"></tr><tr><td class="bl o"> </td><td class="br o"><b class="urTxtStd">Suchen</b></td></tr></tbody></table>
<b class="urTxtStd">Suchen</b>
Source Code (New Search)
<b class="urTxtStd">Neue Suche</b>
Source Code (Back)
<b class="urTxtStd">Zurück</b>
And for all 3 Buttons
SEARCH
<table id="btn" onclick="triggerDetailedSearch();" cellspacing="0"><tbody><tr style="vertical-align: bottom;"><td class="tl o"><td class="tr o"></tr><tr><td class="bl o"> </td><td class="br o"><b class="urTxtStd">Suchen</b></td></tr></tbody></table>
New Search
<table id="btn" onclick="resetDetailedSearchForm();" cellspacing="0"><tbody><tr style="vertical-align: bottom;"><td class="tl lg"><td class="tr lg"></tr><tr><td class="bl lg"> </td><td class="br lg"><b class="urTxtStd">Neue Suche</b></td></tr></tbody></table>
BACK
<table id="btn" onclick="goBack();" cellspacing="0"><tbody><tr style="vertical-align: bottom;"><td class="tl lg"><td class="tr lg"></tr><tr><td class="bl lg"> </td><td class="br lg"><b class="urTxtStd">Zurück</b></td></tr></tbody></table>
我错过了什么?感谢任何帮助为了大家,请保持健康!皮特
我尝试参考您的描述,并了解网页上有三个按钮,分别为Search,New Search和Back。您要单击这些按钮。目前,您正在尝试遍历按钮并获取其属性的值。
您说下面的代码不起作用。
For Each HTMLButtons In HTMLDoc
Debug.Print HTMLButton.className, HTMLButton.tagName, HTMLButton.ID, HTMLButton.innerText
Next IHTMLButton
我尝试检查您的HTML代码,发现您提到的按钮是使用Table元素而不是实际的[[HTML button元素创建的。这就是您的代码无法正常工作的原因。
因此,我建议您尝试使用下面的代码来获取其属性的值。 Dim tbl As MSHTML.HTMLTable
For Each tbl In IE.document.getElementsByTagName("table")
Debug.Print tbl.className, tbl.tagName, tbl.ID, tbl.innerText
Next
输出:我建议您检查另一件事,我注意到所有表都具有相同的ID属性值,即
btn
onclick
中提到的功能名称,以使用VBA代码单击特定按钮。 示例代码: With IE.document
Set elems = .getElementsByTagName("table")
For Each e In elems
If (e.getAttribute("onclick") = "triggerDetailedSearch();") Then
e.Click
Exit For
End If
Next e
End With
此外,您可以根据需要尝试修改代码。