2013-11-27 68 views
0

這是怎樣的一個重新發布的重新安排我的問題,而是:VBA Excel的表格一致單元各行中的電子表格與細胞在網頁表格

我想我的電子表格單元格B1文字與所有細胞匹配在網頁表格的第10欄中。如果匹配,我想複製該行的單元格4文本。到目前爲止,我有:

Dim colRows As Object 
Dim objDataGrid As Object 
Dim xobj1 As Object 
Dim xcel As Object 

Set objDataGrid = IE.Document.getElementById("DataGridReservations") 
Set colRows = objDataGrid.getElementsByTagName("tr") 

For Each element In colRows 
    Set xcel = colRows.getElementsByTagName("td") 
     If Range("B1").Text = xcel.Item(9).innertext Then 
     Range("H" & (ActiveCell.Row)) = xcel.Item(3).innertext 
     Else 
     Range("H" & (ActiveCell.Row)) = "0" 
     End If 
Exit For 

Next 

我在該行

set xcel = colRows.getElementsByTagName.... 

拉我的頭髮得到一個錯誤。另外,爲了確保「對於colRows中的每個元素」元素只會引用set colRows中定義的「getElementsbyTagName(」tr「)」。它不會也採取在TR右括號中的td標籤?

+0

什麼是錯誤信息? – Sico

+0

對象不支持此方法或屬性 – TPJ87

+0

'設置xcel = element.getElementsByTagName(「td」)' –

回答

0

我們可以有更多成功的機會與這樣的:

Sub sof20255214WebpageCell() 

    Dim colRows As Object 
    Dim objDataGrid As Object 
    Dim xobj1 As Object 
    Dim element 
    Dim xcel As Object 

    Dim IE 

    Set IE = CreateObject("InternetExplorer.Application") 
    IE.navigate "http://www.example.com/DataGridPage.php" 

    While (IE.Busy Or IE.READYSTATE <> 4) 
    DoEvents 
    Wend 

    Set objDataGrid = IE.Document.getElementById("DataGridReservations") 
    Set colRows = objDataGrid.getElementsByTagName("tr") 

    For Each element In colRows 
    Set xcel = element.getElementsByTagName("td") 
    If Range("B1").Text = xcel.Item(9).innerText Then 
     Range("H" & (ActiveCell.Row)) = xcel.Item(3).innerText 
    Else 
     Range("H" & (ActiveCell.Row)) = "0" 
    End If 
    Exit For 
    Next 

    IE.Quit 

End Sub 

無論如何,我們不能用這個(BAD):

Set xcel = colRows.getElementsByTagName("td") 

由於colRows是行的集合,而不是一個單一的行對象。不過,你可以使用這個(好):

Set xcel = colRows.Item(0).getElementsByTagName("td") 
相關問題