Сначала вы можете найти таблицу на основе ее атрибута класса
Set HTMLTable = appIE.document.getElementsByClassName("dynamic_contents_ref_12")(0)
. Он получит массив элементов HTML с именем класса dynamic_contents_ref_12
и вернет его первый элемент.
Затем вы можете «сканировать» таблицу, используя атрибут `.Children`
Это даст вам первую строку:
Set TBody = HTMLTable.Children(1) 'The <tbody> tag is the second child
Set Row1 = TBody.Children(0) 'The first <tr> inside the <tbody> tag
Для каждой строки поместите в скобки разные индексы.
Теперь HTML внутри Row1
выглядит как
<tr>
<td>
18/03/2019
</td>
<td>
<span class="number">
20,05
<span class="symbol"></span>
</span>
</td>
<td>
<span class="number">
2,250
<span class="symbol">%</span>
</span>
</td>
<td>
13/02/2019
</td>
</tr>
(каждый <td>
- это ячейка в строке.)
Чтобы получить текст внутриВ ячейке мы можем использовать метод .innerText
, который возвращает строку:
CellA1 = Row1.Children(0).innerText ' = "05/04/2019"
CellB1 = Row1.Children(1).innerText ' = "43,85 "
Собираем все вместе
Используя цикл For Each
, мы можем получить все ячейки из HTMLтаблица и скопировать их на лист - предположим, вы хотите начать с ячейки A1 .
'Table Headers
ActiveSheet.Range("A1").Value = "Date d'échéance"
ActiveSheet.Range("B1").Value = "Transaction"
ActiveSheet.Range("C1").Value = "Taux moyen pondéré"
ActiveSheet.Range("D1").Value = "Date de la valeur"
Set HTMLTable = appIE.document.getElementsByClassName("dynamic_contents_ref_12")(0)
Set TBody = HTMLTable.Children(1)
RowIndex = 2
For Each Row in TBody.Children
ActiveSheet.Cells(RowIndex, 1).Value = Row.Children(0).innerText
ActiveSheet.Cells(RowIndex, 2).Value = Row.Children(1).innerText
ActiveSheet.Cells(RowIndex, 3).Value = Row.Children(2).innerText
ActiveSheet.Cells(RowIndex, 4).Value = Row.Children(3).innerText
RowIndex = RowIndex + 1
Next