使用VBA将多个HTML表从浏览器复制到Excel

时间:2017-07-13 04:04:32

标签: html excel vba excel-vba file-copying

听起来很简单吗?

我正在开发一个类项目,我需要来自一堆.gov网站的大量数据,我正在努力让它可靠地工作。

我能够在单元格中只有文本的表格上完美地工作。我能够用HTML对象的.innertext函数做到这一点(当然我在学校放了我的flashdrive,所以我不能看到我用过的东西,数字)。

无论如何,我的问题是,当它们包含指向其他页面的链接时,我无法从某些单元格中获取信息。例如,在此OPM站点https://www.opm.gov/policy-data-oversight/pay-leave/salaries-wages/2017/general-schedule/上,有一个用于查看表单的Web选项,我无法将其复制到excel中。复制单元格中的文本工作正常,但我无法弄清楚如何复制 href 文本。

有没有人碰巧有这方面的经验,并希望能指出我正确的方向?

最佳,

像往常一样迷失的无能的家伙。

编辑:到目前为止,这是我的代码。我删除了关于href的部分,因为它们导致它无法工作,几乎肯定是不正确的。

Sub GetTables()     Dim doc As HTMLDocument     Dim htmTable As HTMLTable     昏暗的hpLink作为IHTMLElement     昏暗的数据         Dim x As Long,y As Long     Dim oRow As Object,oCell As Object     Dim oDom As Object:设置oDom = CreateObject(" htmlFile")

x = 1
y = 1
Set doc = New HTMLDocument
With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", "https://www.opm.gov/policy-data-oversight/pay-leave/salaries-wages/2017/general-schedule/"
    .send
    Do: DoEvents: Loop Until .readyState = 4
    doc.body.innerHTML = .responseText
    .abort
End With

Set htmTable = doc.getElementsByClassName("DataTable")(0)

With htmTable
    Debug.Print .Rows(0).Cells(1).innerText
    Debug.Print .Rows(6).Cells(1).innerText
    Debug.Print .Rows(7).Cells(1).innerText

    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
            'Previously, I had attempted to use oCell.href to get the value 
            'but that did not work.

            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

0 个答案:

没有答案