我正在尝试使用VBA在.aspx程序中填充多个字段。
虽然我可以填充已分配ID的字段,但我遇到了与没有ID或名称的按钮相关的问题。通过循环我可以找到的HTML并单击此按钮,但点击显示的隐藏字段立即消失。不会抛出错误,我想看到的隐藏字段只是在屏幕上瞬间闪烁并消失。
当我单步执行代码时 - 它没有问题,但是当我运行它时没有。
我认为速度可能是问题,但是在任何地方都插入了Sleep
的高级别,并且没有修复。
====
仅供参考 - 在VBScript中,我可以使用按钮的功能运行它:
objIE.Document.parentWindow.execScript "addFileBox();", "javascript"
但如果我在VBA中尝试使用此代码的变体,则会出现“拒绝访问”错误。
====
这是VBA代码:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.navigate "http://xxxxxxxxx.com/xxxxxx/xxxxxxx.aspx"
While objIE.Busy
Sleep 100
Wend
objIE.Document.getElementById("ddlCategory").Value = "05" 'Works
objIE.Document.getElementById("txtReference").Value = "150812" 'Works
'Below added to find and click "Add Doc" button, it has no ID or name
Dim Document As HTMLDocument
Dim Elements As IHTMLElementCollection
Dim SingleElement As IHTMLElement
Set Document = objIE.Document
Set Elements = Document.getElementsByTagName("INPUT")
For Each SingleElement In Elements
If SingleElement.Value = "Add Doc" Then
SingleElement.Click
Exit For
End If
Next SingleElement
Sleep 1000
如何修复VBA代码,以便字段不会在.aspx用户界面上消失?