Html 将数据从Internet explorer获取到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

我正在开发一个宏,用于从InternetExplorer表中获取数据并将其加载到Excel中的工作表中

使用此代码,我可以获取表格的标题,但无法获取内容

    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的内容。