【问题标题】:Extracting a Specific Cell from a Table in a Web Page从网页中的表中提取特定单元格
【发布时间】:2020-06-24 13:39:24
【问题描述】:

我有一个子程序,可以很好地从网页中提取表格。我期待在 Excel 工作表中精确地提取表格中的特定内部文本(第 3 列和第 5 行)

代码如下:

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

如上所述,我需要提取一个特定的单元格。

任何与此相关的帮助将不胜感激。

【问题讨论】:

    标签: excel vba web-scraping html-table


    【解决方案1】:

    如果你的意思是你只想要一个值,那么:

    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 都是从零开始的,所以我认为您对实际的第 6 行感兴趣 > 澳元每美元的单位。

    【讨论】:

    • 感谢 JvdV ,它对我来说很好,但我需要将该值提取到 Sheet 1 。请提出相同的建议。谢谢
    • @DipreetSingh。然后指定一个单元格。其非常基本的 VBA 知识'Sheets(1).Cells(1,1).Value = ....。更好的是通过它的名称指定一个工作表:Sheets("Sheet1").Cells...etc... 如果这个答案有帮助,那么考虑接受它。单击它左侧的复选标记。
    猜你喜欢
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多