Excel VBA中IE.Document.all("Name").Value失效问题求助
问题解决:读取带点名称的Input元素值
错误原因
运行时错误438是因为IE.Document.all("peticion.numeroPeticion")的写法在处理包含点(.)的元素名称时,DOM解析会把点当成属性分隔符,导致无法正确定位到目标元素,进而找不到Value属性。
可行解决方法
方法1:利用已有的循环直接获取
既然你已经在遍历所有input元素,直接在循环里判断元素名称匹配时取值即可,这样最稳妥:
For Each ele In IE.Document.getElementsByTagName("input") Debug.Print ele.Name; "-"; ele.Value ' 匹配目标名称时直接取值 If ele.Name = "peticion.numeroPeticion" Then Debug.Print ele.Value Exit For ' 找到后可以退出循环提升效率 End If Next
方法2:使用getElementsByName方法
通过元素名称直接获取集合,取第一个元素的Value(确保页面中该名称唯一):
Dim targetEle As Object Set targetEle = IE.Document.getElementsByName("peticion.numeroPeticion")(0) If Not targetEle Is Nothing Then Debug.Print targetEle.Value End If
方法3:修正Document.all的用法(不推荐)
如果一定要用Document.all,需要确保以字符串索引的方式正确访问,不过这种方式兼容性较差:
Dim targetEle As Object Set targetEle = IE.Document.all.Item("peticion.numeroPeticion") If Not targetEle Is Nothing Then Debug.Print targetEle.Value End If
内容的提问来源于stack exchange,提问作者Domingo SC
相关产品推荐
相关产品推荐

