Vba 点击图片或其背后的链接
嗨,我有一个宏,应该点击网页上的按钮。问题是这个代码后面并没有ID。它的内联网网页 我的代码的开始Vba 点击图片或其背后的链接,vba,internet-explorer,getelementbyid,getelementsbytagname,Vba,Internet Explorer,Getelementbyid,Getelementsbytagname,嗨,我有一个宏,应该点击网页上的按钮。问题是这个代码后面并没有ID。它的内联网网页 我的代码的开始 Set IE = New InternetExplorerMedium IE.Navigate = "some website" While IE.ReadyState <> READYSTATE_COMPLETE DoEvents Wend IE.Visible = True IE.document.
Set IE = New InternetExplorerMedium
IE.Navigate = "some website"
While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
IE.Visible = True
IE.document.getElementById("CategoryCombo").Value = "78"
IE.document.getElementById("CategoryCombo").FireEvent ("onchange")
'~~> wait until element is present on web page
Do
Set ieobj = Nothing
On Error Resume Next
Set ieobj = IE.document.getElementById("text1265")
DoEvents
Loop Until Not ieobj Is Nothing
'~~> search box
IE.document.getElementById("text1265").Value = "some value"
'~~> button click example
IE.document.getElementById("subBtn").Click
我也试过了
IE.document.getElementByTagName("a").FireEvent ("onclick")
多谢各位
我也试过了
IE.document.getElementByTagName(“a”).FireEvent(“onclick”)
这应该对你有用,但是你错过了一些东西。您需要指定要查找的
标记,因此.getElementsByTagName(“a”)
将变成.getElementsByTagName(“a”)(i)
,其中i
是要查找的标记的索引(从0开始,按顺序计算HTML中的每个
标记,以获得索引)
之所以需要索引,是因为.getElementsByTagName(“标记名”)
返回一个数组,而不是单个值
我也试过了
IE.document.getElementByTagName(“a”).FireEvent(“onclick”)
这应该对你有用,但是你错过了一些东西。您需要指定要查找的
标记,因此.getElementsByTagName(“a”)
将变成.getElementsByTagName(“a”)(i)
,其中i
是要查找的标记的索引(从0开始,按顺序计算HTML中的每个
标记,以获得索引)
之所以需要索引,是因为
.getElementsByTagName(“标记名”)
返回一个数组,而不是单个值。最后我想到了这个。谢谢你的帮助尼古拉斯·坎普,你的回答让我找到了正确的方向
Set elements = IE.document.getElementsByTagName("a")
For Each element In elements
If Left(element, 33) = "javascript:FSResults_fsopenWindow" Then
Debug.Print element
IE.Navigate element
End If
Next
最后我想到了这个。谢谢你的帮助尼古拉斯·坎普,你的回答让我找到了正确的方向
Set elements = IE.document.getElementsByTagName("a")
For Each element In elements
If Left(element, 33) = "javascript:FSResults_fsopenWindow" Then
Debug.Print element
IE.Navigate element
End If
Next
你可以使用CSS选择器 例如,属性选择器
ie.document.querySelector("[title='View document']").Click
或者通过其值将相同的内容设置为target href
ie.document.querySelector("[href*=fsopenWindow]").Click
最后一个查找包含'fsopenWindow'
这两种方法都避免了元素集合的循环,并使用CSS,因此速度更快。您可以使用CSS选择器 例如,属性选择器
ie.document.querySelector("[title='View document']").Click
或者通过其值将相同的内容设置为target href
ie.document.querySelector("[href*=fsopenWindow]").Click
最后一个查找包含'fsopenWindow'
这两种方法都避免了在元素集合上循环,并使用CSS,因此速度更快。Hi,所以我会循环直到元素被href?或者类似的方法?您还可以对该数组中的每个循环使用
,可能直到找到给定的.Title
属性或href,或者,您可以开始计算所有
标记,以找到所需标记的索引。@FilipOndo在IE.document
中的每个超链接都有一个
标记-通过getElementsByTagName
返回的数组包含其中的每一个标记。您需要查看页面,看看是什么使该链接成为您要单击的链接。@NicholasKempFor Each
应用于迭代集合。使用For
循环迭代数组的效果最好。请参阅。@MathieuGuindon感谢您提供的信息,学习新东西总是很好的。您好,所以我会循环直到元素为href?或者类似的方法?您还可以对该数组中的每个
循环使用,可能直到找到给定的.Title
属性或href,或者,您可以开始计算所有
标记,以找到所需标记的索引。@FilipOndo在IE.document
中的每个超链接都有一个
标记-通过getElementsByTagName
返回的数组包含其中的每一个标记。您需要查看页面,看看是什么使该链接成为您要单击的链接。@NicholasKempFor Each
应用于迭代集合。使用For
循环迭代数组的效果最好。看。@MathieuGuindon谢谢你的信息,学习新东西总是好的。