如何访问 ASPX 菜单页面中的 HTML 个元素?

How to access HTML elements in ASPX menu page?

我正在尝试提交表单详细信息。我无法分享 HTML 详细信息,因此尝试在下面进行解释。

我有一个菜单控制页面https://www.abcmenu.aspx。 此页面使用 javascript:void(0) 调用 url https://www.abc-employee.aspx,当我单击员工菜单项时,它会在同一页面中显示一个表单。

但是,页面没有刷新,也没有加载其他页面,地址栏中的URL保持不变。

这是网站的示例视图:

我需要填写表格详细信息并点击提交按钮。

下面的代码给出了 运行 时间错误,说明需要对象。

Set htmldoc = ie.document

Dim emp as mshtml.ihtmlinputelement
Set emp = htmldoc.getelementbyid("fld_emp")
emp.value = 357690

Dim subm as mshtml.ihtmlelememt
Set subm = htmldoc.getelementbyid("btnk_sub")
Subm.click

我试图 debug.print 表单标签下的所有元素,但它不会 return 表单中的元素。

当我执行代码时,它 return 只有主菜单页面的详细信息,而不是表单元素。

这是我尝试打印 HTML 个元素的代码

Dim htmla as mshtml.ihtmlelement 

Dim htmlas as mshtml.ihtmlelementcollection 

For each htmla in htmlas
    Debug.print htmla.innertext
Next htmla

为什么我无法访问在主菜单页面中打开的表单中的 HTML 元素?

如果您尝试使用 VBA 访问 ASP.Net 网页上的 iframe 元素,那么您可以参考下面的示例,这可能会帮助您解决问题。

Sub demo()
 
    Dim URL As String
    Dim IE As Object
   
    Set IE = CreateObject("InternetExplorer.Application")
   
    IE.Visible = True
    
    URL = "https://example.com"
 
    IE.navigate URL
    
    Do While IE.readyState = 4: DoEvents: Loop
    Do Until IE.readyState = 4: DoEvents: Loop
 
    Dim elemCollection As IHTMLElementCollection
    
    Debug.Print (IE.document.getElementsByTagName("iframe")(0).contentDocument.getElementsByName("fname")(0).Value)
    
    Set IE = Nothing
End Sub

输出: