0
我需要使用它的xpath從html代碼中獲取元素。我使用的是「非標準編碼功能」爲在excel中實現HTMLBaseEle vba
Public Function getXPathElement(sXPath As String, objElement As Object) As
HTMLBaseElement
Dim sXPathArray() As String
Dim sNodeName As String
Dim sNodeNameIndex As String
Dim sRestOfXPath As String
Dim lNodeIndex As Long
Dim lCount As Long
' Split the xpath statement
sXPathArray = Split(sXPath, "/")
sNodeNameIndex = sXPathArray(1)
If Not InStr(sNodeNameIndex, "[") > 0 Then
sNodeName = sNodeNameIndex
lNodeIndex = 1
Else
sXPathArray = Split(sNodeNameIndex, "[")
sNodeName = sXPathArray(0)
lNodeIndex = CLng(Left(sXPathArray(1), Len(sXPathArray(1)) - 1))
End If
sRestOfXPath = Right(sXPath, Len(sXPath) - (Len(sNodeNameIndex) + 1))
Set getXPathElement = Nothing
For lCount = 0 To objElement.ChildNodes().Length - 1
If UCase(objElement.ChildNodes().Item(lCount).nodeName) = UCase(sNodeName) Then
If lNodeIndex = 1 Then
If sRestOfXPath = "" Then
Set getXPathElement = objElement.ChildNodes().Item(lCount)
Else
Set getXPathElement = getXPathElement(sRestOfXPath, objElement.ChildNodes().Item(lCount))
End If
End If
lNodeIndex = lNodeIndex - 1
End If
Next lCount
End Function
但是,當我試圖用下面的代碼
Dim elem As HTMLBaseElement
Dim oHTML As New HTMLDocument
oHTML.body.innerHTML = GetHTML("http://ya.ru")
Set elem = getXPathElement("/html/body/table/", oHTML)
MsgBox elem.InnerText
執行它...它只是打破了「對象變量或沒有設置塊「錯誤。我也試圖實現ELEM變量與
Set elem = New HTMLBaseElement
...但Excel的告訴我:「無效使用new關鍵字」。調試那個過程我發現elem var總是等於沒有。 :/
以防萬一,我有MS Office 2013,是的,我檢查了我的參考。
* Object variable ... *錯誤似乎表明您的'getXPathElement'不返回一個對象。在你的'For lCount ...'循環中,你可能不會返回一個對象(你正在分配它,但是你沒有在分配時退出循環) –
沒關係,但即使嘗試了'elem.innerHTML =「大聲笑「'我得到相同_」對象變量或未設置塊「_錯誤 – impulsgraw
是的,因爲你的函數getXPathElement'是**不**返回一個對象。你不能設置一個屬性在一個'Nothing',如果該函數沒有返回對象(這不是),那麼這就是你試圖做的事情。 –