2017-04-12 19 views
0

Internet Explorerテーブルからデータを取得し、Excelでシートに読み込むマクロを開発しています。このコードでは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タグは表の内容ですが、私のスプレッドシートではどのように取得するのかわかりません。

ありがとうヘルプ

答えて

0

実際の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 

スクリプトのおかげでよろ!!取得した結果に基づいて、適切な変更を加えて作業しているテーブルからデータを取得できますか?

+0

こんにちはRyguy..Thanksはこのマクロでページのすべてのデータを取得するので非常に面白いです。しかし、それは列Dの情報を区切られた特定のタグまたはIDを選択する可能性がありますか? – hdan7

+0

あなたは何を意味するのか分かりません。あなたは例を投稿できますか?また、IF ... THEN文を使用してitm.innertextの内容をテストできることがわかります。 – ryguy72

関連する問題