我是VBA/html的新手,试图自动填写表单,但甚至不能调用它……我在网上搜索了weeks,尝试了许多不同的代码组合,但都没有成功。
HTML代码/元素如下所示:
div title:"TextText" class:"text-truncate mb-2" id="abc_sidebar_startmenuitem" data-type="record" data-appid="82" data url="index.cfm?Xxx=&Yyy=">
i class="fa icon-app-82 mr-1 fa-fw">/i>
span class="clickable" id="ext-eng123">Text/span>
/div>
问题是,class="clickable"
是第30次出现在页面上的可点击的,id="ext-eng123"
是由文本ext-eng
和3个可变的未知数字构建的,总是不同。
使用的VBA代码示例:
Sub GetClick()
Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
With ie
.Visible = True
.navigate "https://company.application.com/home/index.cfm?Tab=home"
Do While .Busy
DoEvents
Loop
Do While .readyState <> 4
DoEvents
Loop
End With
Dim objIE As Object
objIE = document.getElementByClassName("clickable")(29)
objIE.Click
End Sub
我尝试了10+不同的代码样本,包括调用帧编号,都没有成功,我卡住了。
发布于 2018-06-08 13:21:59
尝试以下代码。如果不使用该站点,就很难给出任何解决方案。它们总是假设的。
Sub GetClick()
Dim IE As New InternetExplorer, Html As HTMLDocument
With IE
.Visible = True
.Navigate "https://company.application.com/home/index.cfm?Tab=home"
While .Busy = True Or .ReadyState < 4: DoEvents: Wend
Set Html = .Document
End With
''If the problem still persists, make sure to put here some delay
Html.querySelector(".clickable[id^='ext-eng']").Click
End Sub
另一种方法可能类似于(如果单词"Text“没有出现在具有相同类名的任何地方):
For Each elem In Html.getElementsByClassName("clickable")
If InStr(elem.innerText, "Text") > 0 Then elem.Click: Exit For
Next elem
要添加的引用:
Microsoft Internet Controls
Microsoft HTML Object Library
https://stackoverflow.com/questions/50751921
复制相似问题