从网页/ html表中提取特定的innertext

时间:2013-11-23 21:14:01

标签: excel excel-vba html-table vba

我正在尝试将innertext拉到<TD>标签包围M118。我试图改变这个:

Range("J" & (ActiveCell.Row)) = IE.Document.getelementbyid("ctl05_BasicdatagridInventoryLocations").getelementbyclass("gridItem").innerText

找到表和行是否有我可以在innertext之前添加的东西来选择我想要拉出的<TD>

我正在使用的HTML是:

<table class="grid" cellspacing="0" cellpadding="1" rules="all" border="1" id="ctl05_BasicdatagridInventoryLocations" style="border-style:Solid;width:100%;border-collapse:collapse;">

<tr class="gridPager" align="left">
<td colspan="7"><span>1</span></td>
</tr>

<tr class="gridHeader">
<td>Quantity</td><td>Class</td><td>UOM</td><td>Warehouse</td><td>Location</td><td>Last Cycle Count</td><td>&nbsp;</td>
</tr>

<tr class="gridItem" onmouseover="cc(this, true);" onmouseout="cc(this, false);">
<td>5</td><td>NEW</td><td>EA</td><td>Rig Warehouse</td><td>M118</td><td>11 Sep 2013</td><td></td>
</tr>

</table>

1 个答案:

答案 0 :(得分:1)

你可以使用它(在IE10中测试):

Sub sof20167953GetIeWebpage()
  Dim objIe As Object
  Dim xobj

  Set objIe = CreateObject("InternetExplorer.Application")
  objIe.Visible = True
  '
  objIe.navigate "http://www.example.com/MyTable.html"
  '
  While (objIe.Busy Or objIe.READYSTATE <> 4)
    DoEvents
  Wend
  '
  Set xobj = objIe.Document.getElementById("ctl05_BasicdatagridInventoryLocations").getElementsByClassName("gridItem").Item(0)
  Set xobj = xobj.getElementsByTagName("td").Item(4)
  '
  Range("J" & (ActiveCell.Row)) = xobj.innerText
  '
  Set xobj = Nothing
  '
  objIe.Quit
  Set objIe = Nothing

End Sub

请注意:

  1. getElementById()获取单个元素。
  2. getElementsByClassName()获取元素的集合,因此使用.Item(0)获取第一个元素
  3. getElementsByTagName()获取元素的集合,因此使用.Item(0)获取第一个元素