1
'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 标记之前,我已经获取了数据,但只有数据片段,而不是整个表格,我现在只是耸了耸肩。

4

1 回答 1

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
于 2013-07-08T20:30:29.407 回答