Извлечение ячейки Specifi c из таблицы на веб-странице - PullRequest
0 голосов
/ 12 марта 2020

У меня есть подпрограмма, которая хорошо работает при извлечении таблицы из веб-страницы. Я с нетерпением жду возможности извлечь конкретный внутренний текст в таблицу точно (3-й столбец и 5-й ряд) в листе Excel.

Код указан ниже:

Sub Extracttable()

Dim oDom As Object: Set oDom = CreateObject("htmlFile")
Dim x As Long, y As Long
Dim oRow As Object, oCell As Object
Dim data

y = 1: x = 1

With CreateObject("msxml2.xmlhttp")
.Open "GET", "https://www.xe.com/currencytables/?from=USD&date=2020-02-07", False
.Send
oDom.Body.innerHTML = .responseText
End With

With oDom.getElementsByTagName("table")(0)
ReDim data(1 To .Rows.Length, 1 To .Rows(1).Cells.Length)
For Each oRow In .Rows
For Each oCell In oRow.Cells
data(x, y) = oCell.innerText
y = y + 1
Next oCell
y = 1
x = x + 1
Next oRow
End With

Sheets(1).Cells(1, 1).Resize(UBound(data), UBound(data, 2)).Value = data
End Sub

Мне нужно извлечь указанную c ячейку, как указано выше.

Любая помощь, относящаяся к тому же, будет высоко оценена.

1 Ответ

1 голос
/ 12 марта 2020

Если вы имели в виду, что вам нужно только одно значение, то:

Sub Extracttable()

Dim oDom As Object: Set oDom = CreateObject("htmlFile")
Dim x As Long, y As Long
Dim oRow As Object, oCell As Object
Dim data

y = 1: x = 1

With CreateObject("msxml2.xmlhttp")
.Open "GET", "https://www.xe.com/currencytables/?from=USD&date=2020-02-07", False
.send
oDom.body.innerHTML = .responseText
End With

Debug.Print oDom.getElementsByTagName("table")(0).Rows(5).Cells(2).innerText

End Sub

И .Rows, и .Cells основаны на нуле, поэтому я решил, что вас интересует фактическая шестая строка> Единицы на доллар США для AUS.

...