Html 将数据从Internet explorer获取到excel
我正在开发一个宏,用于从InternetExplorer表中获取数据并将其加载到Excel中的工作表中 使用此代码,我可以获取表格的标题,但无法获取内容Html 将数据从Internet explorer获取到excel,html,angularjs,vba,excel,Html,Angularjs,Vba,Excel,我正在开发一个宏,用于从InternetExplorer表中获取数据并将其加载到Excel中的工作表中 使用此代码,我可以获取表格的标题,但无法获取内容 Sub extraerDatos() Dim URL As String Dim IE As InternetExplorer Dim HTMLdoc As HTMLDocument Dim TDelements As IHTMLElementCollection Dim TDelement A
Sub extraerDatos()
Dim URL As String
Dim IE As InternetExplorer
Dim HTMLdoc As HTMLDocument
Dim TDelements As IHTMLElementCollection
Dim TDelement As HTMLTableCell
Dim oElement As Object
Dim r As Long
URL = "URL"
Set IE = New InternetExplorer
With IE
.Navigate URL
.Visible = True
'Cargar pagina
While .Busy Or .readyState <> READYSTATE_COMPLETE: DoEvents: Wend
Set HTMLdoc = .Document
End With
Application.Wait (Now + TimeValue("0:00:10"))
Set dados = HTMLdoc.getElementsByClassName("tableContainer")
(0).getElementsByTagName("span")
I = 0
For Each oElement In dados
Sheets("Hoja1").Range("A" & I + 1) = dados(I).innerText
I = I + 1
Next oElement
End Sub
Sub exterardatos()
将URL设置为字符串
Dim IE作为InternetExplorer
将HTMLdoc设置为HTMLDocument
将TDI元件变暗为IHTMLELELEmentCollection
作为HTMLTableCell的Dim TDelement
作为对象的模糊元素
变暗,变长
URL=“URL”
Set IE=新的InternetExplorer
与IE
.浏览网址
.Visible=True
卡加·帕吉纳
当.Busy或.readyState时readyState\u完成:DoEvents:Wend
设置HTMLdoc=.Document
以
Application.Wait(现在+时间值(“0:00:10”))
Set dados=HTMLdoc.getElementsByClassName(“tableContainer”)
(0.getElementsByTagName(“span”)
I=0
对于护墙板中的每个元素
图纸(“Hoja1”)。范围(“A”&I+1)=护墙板(I)。内部文本
I=I+1
下一个元素
端接头
这是页面HTML代码的一部分
<div class="tableContainer" >
<div class="tlnTable tlnw12" id="tlnAngTableTransfers" style="display:none" >
<span style="margin:0; padding-bottom: 10px;" class="field-validation-error ng-binding" ng-show="model.bTransferRequired">Select at least one transfer</span>
<div class="tlnHeader tlnw12"> <!-- HEADER -->
<div class="tlnw3">
<div class="tlnw1 tlntd">
<input type="checkbox" ng-model="model.grid.selected" ng-change="model.grid.selectAll()"/>
</div>
<div class="tlnw6 tlntd">
<a href="#" class="tlnSortLink tlnw12" ng-click="model.grid.sortableColumns.columns.transferId.changeSort()">
<span class="tlnw10">Transfer ID / PO-SO Number </span>
<span class="tlnSortIco tlnw2" ng-show="model.grid.sortableColumns.lastSortedColumn.id === model.grid.sortableColumns.columns.transferId.id" >
<span class="tlnSortAsc tlnw12 " ng-class="{act: model.grid.sortableColumns.lastSortedColumn.modifier==='asc', inact: model.grid.sortableColumns.lastSortedColumn.modifier==='desc'}" ></span>
<span class="tlnSortDesc inact tlnw12" ng-class="{act: model.grid.sortableColumns.lastSortedColumn.modifier==='desc', inact: model.grid.sortableColumns.lastSortedColumn.modifier==='asc'}"></span>
</span>
</a>
</div>
至少选择一个传输
我知道NG标签是表格的内容,但我不知道如何获得它,因为我的电子表格
谢谢你的帮助,我不知道你在哪里发布了实际的URL,所以我只能做一个一般性的推荐,但我不能为你测试脚本
Sub DumpData()
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
URL = "http://finance.yahoo.com/q?s=sbux&ql=1"
'Wait for site to fully load
IE.Navigate2 URL
Do While IE.Busy = True
DoEvents
Loop
RowCount = 1
With Sheets("Sheet1")
.Cells.ClearContents
RowCount = 1
For Each itm In IE.document.all
.Range("A" & RowCount) = itm.tagname
.Range("B" & RowCount) = itm.ID
.Range("C" & RowCount) = itm.classname
.Range("D" & RowCount) = Left(itm.innertext, 1024)
RowCount = RowCount + 1
Next itm
End With
End Sub
谢谢你的剧本乔尔!!根据您得到的结果,您是否可以进行适当的更改以从您正在使用的表中获取数据?Hi Ryguy..感谢非常有趣,因为使用此宏我可以获取页面的所有数据。但是可以选择特定的标签或ID来分隔D列的信息吗?我不知道你的意思。你能举个例子吗。另外,要知道可以使用IF…THEN语句测试itm.innertext的内容。