在HTML 选择标签中的 Excel VBA 更改选项中,我使用以下代码更改<select>
标签内的选项:
For Each objOption In objIE.Document.GetElementsByTagName("table")(0).GetElementsByTagName("td")(tdNode).GetElementsByClassName("txt_input1")(0).Options
If objOption.Value = SelQ Then
objOption.Selected = True
objIE.Document.GetElementsByTagName("table")(0).GetElementsByTagName("td")(tdNode).GetElementsByClassName("txt_input1")(0).OnChange
Else
objOption.Selected = False
End If
Next
这似乎适用于带有嵌套<table>
标签的网站,但该网站在没有标签的情况下进行了更新,因此,为了补偿找到所选选项,我使用了这个:
For Each objOption In objIE.Document.getElementById("frmProduction").elements.namedItem("WQ").Options
If objOption.Value = strVal Then
objOption.Selected = True
objIE.Document.getElementById("frmProduction").elements.namedItem("WQ").onchange
Exit For
Else
objOption.Selected = False
End If
Next
这给了我以下错误: Run-time error '5002': Application-defined or object-defined error
我使用了上面的解决方案,因为它在另一个使用<frames>
标签的Internet Explorer 应用程序中工作,因此我对其进行了一些修改:
objIE.document.frames("DemographicsIFrame").document.GetElementByID("DropDownPayerID").value = PayerID
objIE.document.frames("DemographicsIFrame").document.GetElementByID("DropDownPayerID").onchange
我试图绕过它但没有成功。我可以更改选定的选项,仅此而已。它不会使用与所选选项相关的所需信息更新页面。在上面的示例中,这就是onchange
事件用于...在更新 PayerID 后更改页面内容的目的。
关于如何进行这项工作的任何建议?
我们实际上能够想出一个解决方案:
For Each objOption In objIE.document.getElementById("frmProduction").elements.namedItem("WQ").Options
If objOption.Value = strVal Then
objOption.Selected = True
Set evtFiroz = objIE.document.createEvent("HTMLEvents")
evtFiroz.initEvent "change", False, True
objIE.document.getElementById("WQ").dispatchEvent evtFiroz
Exit For
Else
objOption.Selected = False
End If
Next
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句