доступ к html-элементам таблицы дивидендов веб-сайта ASX с помощью Excel vba

0

Я пытаюсь загрузить данные Divident из ASX!

Мне нужно знать, как перебирать каждую строку в таблице и каждый td (элемент данных) в этой таблице для печати внутреннего текста на листе excel.

Вот мой код.... используя это как руководство

VBA excel Для каждой строки в ячейке соответствия таблицы в таблице с ячейкой в таблице веб-страницы

Sub WebTable()

Dim ie As New InternetExplorer
Set ie = Nothing
ie.Visible = False
Dim url As String
Dim doc As HTMLDocument
Dim items As Variant
Dim tr As String
Dim tbody As String
Dim td As String
Dim r As Double
Dim i As Double

Dim tbObj As Variant
Dim trObj As Variant
Dim tdObj As Variant
Dim tdItem As Variant
Dim element

    tbody = "tbody"
    tr = "tr"
    td = "td"
    url = "http://www.asx.com.au/asx/markets/dividends.do?by=asxCodes&asxCodes=ont&view=latest"

    ie.navigate url
    Debug.Print url

    'loop until complete so program doesn't freeze
    Do
    DoEvents
    Loop Until ie.readyState = READYSTATE_COMPLETE

'get everything in the dividends table using its id
    Set tbObj = ie.document.getElementById("dividends") 'all table elements including headers

    'get the four rows for the ONT stock (headings and data elements
    Set trObj = tbObj.getElementsByTagName(tr)


    'get the eight data items for each row of the ONT stock e.g stock price date etc.
    For Each trObj In tbObj

'print each data element one by one for each of the four rows
        Set tdObj = tbObj.items(0).getelementbytagname("td")
        Set Count = tdObj.length
        Debug.Print tdObj(0).innerText
    Next trObj

End Sub
  • 0
    santosh ваш сайт полон спама, только его рекламные ссылки. что ты пытаешься вытащить?
  • 0
    я только заметил, что он показывает только две строки при использовании веб-запроса, но если вы идете на сайт: asx.com.au/asx/markets/… он показывает все четыре строки (дивиденды за несколько лет)
Показать ещё 2 комментария
Теги:
excel
stocks
stockquotes

1 ответ

0
Лучший ответ

Попробуй это

Sub WebTable()

    Dim ie As New InternetExplorer
    Dim url As String

    Dim trCollection As Object
    Dim tdCollection As Object

    Dim tdObj As Object
    Dim trObj As Object


    url = "http://www.asx.com.au/asx/markets/dividends.do?by=asxCodes&asxCodes=ont&view=latest"

    ie.navigate url
    Debug.Print url


'loop until complete so program doesn't freeze
    Do
        DoEvents
    Loop Until ie.readyState = READYSTATE_COMPLETE

'get everything in the dividends table using its id
    Set tbObj = ie.document.getElementById("dividends") 'all table elements including headers

'get the four rows for the ONT stock (headings and data elements
    Set trCollection = tbObj.getElementsByTagName("tr")

Dim i As Integer
 i = 1
'get the eight data items for each row of the ONT stock e.g stock price date etc.
    For Each trObj In trCollection

    If i = 1 Then
'print each data element one by one for each of the four rows
        Set tdCollection = trObj.getElementsByTagName("th")
        Else
          Set tdCollection = trObj.getElementsByTagName("td")

      End If

      i = i + 1

        For Each tdObj In tdCollection

            Debug.Print tdObj.innerText
        Next

    Next

End Sub

Изображение 174551

  • 0
    @ user3098818 Я удалил нежелательные переменные.
  • 0
    пытаюсь сейчас. печатает данные только в последнем ряду таблицы, см. ссылку. печатает только нижнюю строку зеленым цветом. drive.google.com/file/d/0B9QWdVxiXWaRbnBpTGp1S2ZFU0U/...
Показать ещё 27 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню