用/ VBA从一堆HTML中拉出一张桌子;高强

时间:2013-07-08 20:13:19

标签: excel-vba html-parsing vba excel

'get the table based on the table’s id
Set ieDoc = ieApp.Document
Set ieTable = ieDoc.all.Item("contentBody")

'copy the tables html to the clipboard and paste to teh sheet
If Not ieTable Is Nothing Then
    Set clip = New DataObject
    clip.SetText "<table>" & ieTable.innerHTML & "</table>"
    clip.PutInClipboard
    Sheet1.Select
    Sheet1.Range("A1").Select
    Sheet1.PasteSpecial "Unicode Text"
End If

我玩过上面的代码,知道有更好的方法。 “contentBody”包括:

<div id="contentBody">
<div id="breadcrumb_navigation">
<ul class="nav nav-pills" style="margin-bottom: 0px;">
<h2 class="leftShim">Base Statistics</h2>
<div style="margin: 0px 15px 15px;">
<table class="table table-striped">
</div>
<br/>
<br/>
</div>

我想要的只是表<table class="table table-stripe">

但由于我缺乏知识,我不知道从哪里开始修剪多余的,或者我应该尝试另一种方法。

对于此示例,网站上的导航,搜索和面包屑会被拉入我的工作表。我在使用HTML标签之前抓取了数据,但是只有数据而不是整个表格而且我现在只是耸耸肩。

1 个答案:

答案 0 :(得分:2)

基本上,您可以按标记名称获取项目,如此链接中所述:http://www.vbaexpress.com/forum/showthread.php?t=31831

Dim HTMLdoc As HTMLDocument
Dim TDelements As IHTMLElementCollection   

Set HTMLdoc = ieApp.Document
Set TDelements = HTMLdoc.getElementsByTagName("table")

如果您愿意,可以列举以下项目:

Dim TDelement As HTMLTableCell
For Each TDelement In TDelements
    'code-code-code-code-code
Next