如何使用 VBA 单击 HTML 文本

Posted

技术标签:

【中文标题】如何使用 VBA 单击 HTML 文本【英文标题】:How to click HTML text with VBA 【发布时间】:2022-01-10 14:21:09 【问题描述】:

我正在编写一个代码来自动用单元格值填充一些网站:

Sub prueba()
Dim oIE As InternetExplorer: Set oIE = New InternetExplorer
Dim oDocument As htmlDocument
Dim ECICOR As HTMLSelectElement
Dim i, j As Integer
Dim x As Long

oIE.Visible = True

oIE.Navigate "http://sirem.eci.geci/smcfs/console/login.jsp"


Do While oIE.readyState <> 4: DoEvents: Loop


With oDocument
Set oDocument = oIE.Document
End With
 
 
Call oDocument.parentWindow.execScript("window.parent.sc.postDummyFormForWindow('/smcfs/console/inventory.search');", "JScript")


Set ECICOR = oDocument.getElementById("enterpriseFieldObj")
ECICOR.Focus
ECICOR.Click
ECICOR.Value = "ECICOR"
ECICOR.FireEvent ("onChange")



oDocument.getElementsByClassName("unprotectedinput")(0).Value = Cells(i, 1)
oDocument.getElementsByTagName("a")(0).Click
oDocument.getElementsbyClassName("evenrow")(1).click

End Sub

所以我的问题是我的程序在代码的最后一行之后没有做任何事情,我不知道这是什么问题,因为它之前工作过。

这里可以看到 HTML 代码:


<
<TR class=evenrow><TD class=checkboxcolumn><INPUT type=checkbox value=%3CInventoryItem+ItemID%3D%22000000000152030052%22+OrganizationCode%3D%22ECICOR%22+ProductClass%3D%22%22+UnitOfMeasure%3D%22%22%2F%3E name=EntityKey oldChecked="false"> <INPUT type=hidden value=000000000152030052 name=ItemID_1> <INPUT type=hidden name=UOM_1> <INPUT type=hidden name=PC_1> <INPUT type=hidden value=ECICOR name=OrgCode_1> </TD>
<TD class=tablecolumn><A onclick="javascript:showDetailFor('%3CInventoryItem+ItemID%3D%22000000000152030052%22+OrganizationCode%3D%22ECICOR%22+ProductClass%3D%22%22+UnitOfMeasure%3D%22%22%2F%3E');return false;" href="">000000000152030052</A> </TD>
<TD class=tablecolumn></TD>
<TD class=tablecolumn></TD>
<TD class=tablecolumn>001097578527174</TD></TR>">

我怎样才能找到解决方案?

【问题讨论】:

“代码总是出错”——你为什么不告诉我们错误是什么? 这是错误 438。cells(1,1) 中的值是一个字符串。 ...“错误 438”是什么意思?那是HTTP错误代码吗? VBA 运行时错误代码?它甚至可能是对 BSOD 停止代码的解释...当人们要求您提供错误详细信息时,您应该从您的计算机上逐字重复 整个消息,而不是截断或缩写它。 错误 438 表示“对象不支持此属性或方法”。 运行时错误 438:对象不支持此属性或方法对不起 【参考方案1】:

document.getElementsByClassName() 将返回一个数组,而不是 Element。如果你只有一个元素属于unprotectedinput 类,那么你需要获取document.getElementsByClassName() 返回的数组中的第一个元素。

【讨论】:

以上是关于如何使用 VBA 单击 HTML 文本的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA:如何使旋转按钮控制多个文本框?

Excel VBA在IE11中使用自动完成填充文本框

如何将带有html标签的一列文本转换为excel中vba中的格式化文本

如何从报表上的选定文本框中提取文本? VBA

如何使用Excel VBA单击href

如何使用文件对话框将文件路径保存在字符串中,使用 Access VBA?