我需要访问输入的值并使用 Excel 宏单击另一个输入,并且我需要通过它们的类选择输入,因为它们没有 id。我在谷歌上看到有一个 .getElementByClassName() 方法,但没有办法让它工作。甚至没有使用“(0)”访问假定的第一个元素
IE.document.getElementByClassName("tarifas-index")(0)
我还看到人们通过 tagName 进行 foreach 选择并通过所选元素的集合来检查 If if .className == 我们想要的那个。或多或少是这样的:
Dim IE As Object
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True
IE.Navigate "http://www.salvadorescoda.com/tarifas/index.htm"
Do
DoEvents
Loop Until IE.readystate = 4
'------------------------
'La siguiente linea es la que causa el error
For Each itemEle In IE.document.getElementByTagName("input")
If itemEle.className = "campocodigo" Then
itemEle.Value = "prueba"
End If
Next
Range("A2").Value = valor
但是这段代码对我不起作用,特别是注释后的行。我做错了什么或没有考虑到什么?有什么解决方案?我从来没有使用过 VBA 编程,我承认在编写了 JS 和一些 PHP 之后,这种语言让我感到紧张。提前致谢!
你好!
你的代码在正确的轨道上,你的想法也是如此,弄乱了classname。问题是提供的 URL 的源代码。如果您阅读源代码,您会看到您要查找的元素实际上并不在 HTML 本身中(我用 Mozilla Firefox 阅读它,但它不起作用),因为您要查找的输入实际上在里面加载在主框架上的框架。也就是说,在另一个文档中(如果你懂JS和PHP我相信你比我更了解文档、框架等,但我希望我已经解释了自己,我对PHP和JS一无所知,纯 VBA 是我的事)。
知道了这一点,在尝试获取元素之前,您必须访问框架文档。具体来说,您感兴趣的框架称为mainFrame。
我的代码是你的副本,但扩展了一点。总结一下,步骤如下:
现在是代码。我希望我能服务。根据您的需要对其进行修改。
编码:
我通过运行代码得到:
我希望它对你有用,我鼓励你继续使用 VBA,这是一门非常血腥的语言,但从长远来看,我认为这是值得的。
一切顺利。
更新: OP 在 IE 11 上存在问题,因为它无法识别帧。让我们尝试另一种方式来调用它们,看看它是否有效。