0

我的 VBA 代码在 Intranet 页面上填写表单时遇到了一些问题。它通常可以正常工作,但每隔一段时间,此表单上字段的 ID 就会更改,我必须更新我的代码,但直到我报告了很多错误。无论如何我可以使用通配符,或者在尝试填写表格之前遍历可能性吗?我正在使用的代码是

WebBrowser1.Document.GetElementById("Template_ctl24_ctl00_Shelfmark" & x & "_TextField").value = Range("Q" & x + 11).value

但是 ID 可以更改为 Template_ctl22_ctl00.... 或 Template_ctl25_ctl00.... 原因我不知道。我无法控制那个区域——我真的只是前端。那么使用 * 通配符是否有一些变化?或者在继续之前遍历 ID 是 22、24、25 还是其他任何值?使用这种 VBA 代码行可以做什么,不能做什么?

提前致谢

保罗

4

1 回答 1

0

如果您知道元素在页面上的位置,最好使用类似getElementsByTagName.

但是,您可以使用简单的循环。在下文中,我假设尝试引用不存在的元素会导致Nothing,但可能会产生错误 - 我尚未测试。如果是这样,您将需要改用错误处理代码。

Dim elem As Variant

For x = 22 To 25
    Set elem = WebBrowser1.Document.GetElementById("Template_ctl24_ctl00_Shelfmark" _
        & x & "_TextField")
    If Not elem Is Nothing Then
        Exit For
    End If
Next x
If elem Is Nothing Then
    'Doh! not found
Else
    'obtain elem.value
End If
于 2013-07-12T13:40:40.873 回答