2017-04-17 137 views
1

因此,由於受到約束,我需要使用excel vba解析一些醜陋的html。 HTML的問題在於它沒有元素ID。我有一個擁有許多無標籤表格的頁面,每個表格都有幾行。我可以建立的唯一的事情是,我需要在其中一個單元中存在標識符。每當ID「xtu_id」作爲表格的一行中的單元格中的值出現時,我想要從該行中提取數據。所以它看起來像這樣:使用excel vba解析HTML的錯誤

<tr> 



<td> 

        col1 

</td> 


<td> 

        col2 

</td> 


<td> 

        xtu_id 

</td> 


<td> 

        col4 

</td> 


</tr> 

現在,我看到xtu_id此行存在,我想該行的所有單元格轉儲到一個Excel工作表。以下是我從閱讀其他職位計算器使用:

Sub CommandButton1_Click() 

    Dim appIE As InternetExplorerMedium 
    Set appIE = New InternetExplorerMedium 

    With appIE 
     .Navigate "https://my_website" 
     .Visible = True 
    End With 

    Do While appIE.Busy Or appIE.ReadyState <> 4 
     DoEvents 
    Loop 

    Set mydata = appIE.Document.getElementsByTagName("tr") 

    For Each e In mydata 
     For Each c In e 
      If c.Cells().innerText Like "xtu_id" Then 
       myValue = c.Cells().innerText 
       MsgBox (myValue) 
      End If 
     Next c 
    Next e 
    Set appIE = Nothing 

End Sub 

此代碼的工作,直到我到了[每個...]聲明,我有麻煩的每一行的每個單元循環來搜索「 xtu_id「文本。任何想法如何做到這一點?

回答

1

試試這個:

For Each c In e.Cells 
    If c.innerText Like "xtu_id" Then 
     myValue = e.innerText 
     MsgBox (myValue) 
    End If 
Next c 
+0

感謝您的快速回復斯科特,我換,在並沒有得到一個值,但該代碼並不會報錯了。也許我的if語句不是真的 – barker

+0

你是否逐行並調試?一個[回答](http://stackoverflow.com/questions/43458256/retreiving-td-tag-from-table-on-website-using-vba-and-put-int-excel/43459103#43459103)我早前提供可能有幫助。 –

+0

感謝Scott的幫助,於是我將c.innertext的e.innertext換成了拉單元格的值,並得到了我以後的內容。你的回答是正確的,這是我的錯,因爲我不清楚我想拉什麼字符串。再次感謝! – barker