Как я могу получить содержимое таблицы на веб-сайте в Microsoft Excel, если таблица не имеет идентификатора?

0

У меня есть этот сайт, который я хотел бы получить данные в таблице в Microsoft Excel.
Я использовал множество примеров VBA, но не смог заставить их работать, потому что таблица не имеет имени или идентификатора в теге таблицы (в HTML).

Это сайт:

http://www.tadawul.com.sa/wps/portal/!ut/p/c1/04_SB8K8xLLM9MSSzPy8xBz9CP0os3g_A-ewIE8TIwN3Q0tDA0_v4EDLUCNHIwMvc6B8JJK8QbCpgYGniU9YiLOPu7GBgQFJut0DwkxBuoONggO8jA08jQjo9vPIz03Vj9SPMsepyslUP0Q_0hmoKBKvooLc0IhyQ91AAJDgZts!/dl2/d1/L0lDUmlTUSEhL3dHa0FKRnNBL1lCUlp3QSEhL2Vu/?symbol=4003&tabOrder=2&chart_type=chart_oneDay&announcmentNumber=&isAnnual=

Как я могу "захватить" данные таблицы и поместить ее в Excel?

[Примечание редактора 13 ноября: подтвердил, что URL-адрес является допустимым.]

  • 1
    Таблица обычно имеет определенное расположение в документе, даже если у нее нет идентификатора или имени. Таким образом, вы можете сделать что-то вроде Set tbl = document.getElementsByTagName("table")(3) чтобы получить ссылку на третью таблицу на странице.
Теги:
excel-vba
excel
parsing

1 ответ

0

Таблица, на которую вы ищете, находится на уровне 21 (ниже) ниже корня документа (<html>) и имеет атрибут класса, установленный на значение " Таблица 3 ",

<table width="100%" cellspacing="1" cellpadding="0" border="0" class="Table3">

который используется только один раз по всему HTML и, следовательно, дает довольно хороший критерий выбора. Поэтому я предлагаю вам сделать что-то вроде

Dim Doc As MSHTML.HTMLDocument
Dim ECol As MSHTML.IHTMLElementCollection
Dim IFld As MSHTML.IHTMLElement

    Set ECol = Doc.getElementsByTagName("table")
    For Each IFld In ECol
        If VarType(IFld.getAttribute("class")) <> vbNull Then
            If IFld.getAttribute("class") = "Table3" Then

                ' further process the Inner HTML of IFld ...

            End If
        End If
    Next
' ...

Сначала проверка VarType перед проверкой значения String заключается в обнаружении и исключении элементов таблицы, которые не содержат никакого элемента класса, и в этом случае имя If on класса завершится с ошибкой.

Отладчик VBA и ключ F8 - ваши друзья!

  • 0
    MSHTML.IHTMLElementCollection ----> Ошибка компиляции: пользовательский тип не определен
  • 0
    Я полагаю, вы создали ссылку на «Библиотеку объектов Microsoft HTML» (... \ mshtml.tlb - содержащую определение коллекции) и «Элементы управления Microsoft Internet» (... \ ieframe.dll)?

Ещё вопросы

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