【问题标题】:Get data from Internet explorer to excel从 Internet Explorer 获取数据到 Excel
【发布时间】:2017-04-17 22:23:36
【问题描述】:

我正在开发一个宏来从 Internet Explorer 表中获取数据并加载到 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

这是页面 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 标签是表格的内容,但我不知道如何获取它,用于我的电子表格..

感谢您的帮助

【问题讨论】:

    标签: html angularjs vba excel


    【解决方案1】:

    好吧,我看不到你在哪里发布了实际的 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
    

    感谢乔尔的剧本!!根据您获得的结果,您能否进行适当的更改以从您正在使用的表中获取数据?

    【讨论】:

    • 嗨 Ryguy..Thanks 非常有趣,因为通过这个宏我得到了页面的所有数据。但是可以选择特定的标签或ID'S来分隔D列的信息吗?
    • 我不确定你的意思。你能发布一个例子。另外,您可以使用 IF...THEN 语句测试 itm.innertext 的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2013-12-01
    相关资源
    最近更新 更多