我正在尝试使用 Excel 中的宏访问网页,在输入中输入代码,按下按钮并复制搜索结果。这是我做不到的最后一步。包含价格的元素的 ID 为 #result_ok,但缺点之一是它是一个文本节点,它没有在任何内容中,同时具有三个兄弟节点。我展示给你:
我试图做一个 getElementById 并访问它的 innerText 或 innerHTML 并且什么都没有......你得到的代码与你的内部文本不对应,或者在尝试其他事情时会出现各种错误。
Sub buscar()
Dim IE As InternetExplorer
Dim DOC As HTMLDocument
Dim url As String
Set IE = Nothing
Set DOC = Nothing
url = "http://www.salvadorescoda.com/tarifas/index.htm"
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate url
While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE
DoEvents
Wend
Set DOC = IE.document.frames
Dim iFrameDoc As HTMLDocument
Set iFrameDoc = DOC.Item("mainFrame").document 'especificamos el nombre del frame
If iFrameDoc Is Nothing Then
MsgBox "No existe ningún frame con el nombre especificado."
IE.Quit
Set IE = Nothing
Exit Sub
End If
Dim itemEle As Object
'ya estamos en el frame, ahora podemos conseguir el elemento INPUT
For Each itemEle In iFrameDoc.getElementsByTagName("input")
If itemEle.getAttribute("class") = "campocodigo" Then
itemEle.Value = ActiveCell.Value
Exit For
End If
Next
'buscamos y clickamos el botón buscar
For Each itemEle In iFrameDoc.getElementsByTagName("input")
If itemEle.getAttribute("class") = "floatright botonbuscar" Then
itemEle.Click
Exit For
End If
Next
'¿Como obtengo el texto?
ActiveCell.Offset(0, 1).Value = iFrameDoc.getElementsById("result_ok").innerHTML
'IE.Quit
'Set IE = Nothing
End Sub
你知道问题是什么吗?我怎么才能得到它?非常感谢您!
你好!
和往常一样。这是关于用你拥有的所有 DIV 元素制作一个循环,直到你确定你感兴趣的那个。
在您单击搜索的部分之后,我已将以下内容添加到代码中:
总结一下这个过程,我所做的就是将整个DIV的文本进行分割,使用空格作为分隔符。在您的示例中, DIV 的整个文本如下所示:
Artículo: AA02079Descripción: V.ASIENTO JENKINS 2 1/2"PVP (Sin IVA): 379.82€
在所有的文本中,我只对最后一个感兴趣。其他一切对我来说都太多了。所以我要做的是使用拆分函数拆分字符串(更多信息在这里)
这给我返回了一个包含几个值的数组(在这种情况下最多为 10,因为数组中的初始值总是在索引 0 处),它们如下:
总之,我们对最后一个感兴趣,也就是价格。我们对 Matrix(9) 很感兴趣。我们很幸运,因为现在设计了网络,我们总是对最新的价值感兴趣,因为它就是价格。
要知道数组中的最后一个值,我们使用Ubound属性
要从数组中调用特定值,只需使用一个数字。也就是说,如果你写,例如,
Activecell.Value = Matriz(3)
你会得到第四个值。但是如果你写ActiveCell.Value = Matriz (Ubound(Matriz))
你总是会得到数组的最后一个值,不管它的大小。因此,所有这些想法都是我设计代码的方式,这是我执行后得到的:
我希望它对您有所帮助,并且您可以根据需要调整代码。