使用IE将网页内容导出到Excel中

时间:2011-02-16 18:46:47

标签: excel export-to-excel

我需要从this page on Wikipedia中提取学校名称和缩写。

缩写将放在A栏和B栏中的学校名称中。

我希望使用the feature in IE,但我似乎无法弄清楚是否可以导出整个页面导出页面的某些方面。

我似乎无法弄清楚需要更改哪些设置才能使其正常工作。

2 个答案:

答案 0 :(得分:0)

如果这是一次性的事情,你应该能够接近你需要的东西。 在新工作表上,如果选择一个可用选项

enter image description here

并按照将其导入工作表的指示范围A1,您将拥有无关的行,但您只能将A16:A380复制到另一个工作表。 在新工作表上选择范围时,选择DATA> Text to Columns,并将分隔符设为“ - ”(减号),这将基本上为您提供所需的内容。 从这里,在A上排序A:B并删除不需要的空行和[编辑]标题行。

由于数据不在单独的表中,因此您无法轻松自动执行此操作,但即使这样也可以使用宏来完成,如果这不是一次性的话。

这个例子是Office 2003,但其他版本可以做同样的想法。

答案 1 :(得分:0)

如果您想使用VBA宏来执行此操作,那么这里是您需要的代码。您需要设置对“Microsoft XML,v6.0”的引用,然后创建并运行此宏:

Option Explicit

Sub main()

Dim domResult As DOMDocument60
Dim ixnlLi As IXMLDOMNodeList
Dim iRow As Integer
Dim sResult As String
Dim iDashPos As Integer

Set domResult = New DOMDocument60
domResult.setProperty "ProhibitDTD", False
domResult.setProperty "SelectionNamespaces", "xmlns:ns='http://www.w3.org/1999/xhtml'"
domResult.resolveExternals = True
domResult.validateOnParse = False
domResult.async = False
domResult.Load "http://en.wikipedia.org/wiki/List_of_colloquial_names_for_universities_and_colleges_in_the_United_States"


Set ixnlLi = domResult.selectNodes("id('bodyContent')/ns:ul/ns:li")

With ThisWorkbook.Worksheets("Sheet1")
    .UsedRange.ClearContents
    For iRow = 1 To ixnlLi.Length
        sResult = ixnlLi(iRow - 1).Text
        iDashPos = InStr(sResult, "-")
        If (iDashPos > 0) Then
            .Cells(iRow, 1).Value = Trim$(Left$(sResult, (iDashPos - 1)))
            .Cells(iRow, 2).Value = Trim$(Mid$(sResult, (iDashPos + 1)))
        Else
            .Cells(iRow, 1).Value = sResult
            .Cells(iRow, 2).Value = ""
        End If
    Next iRow
    .UsedRange.Columns.AutoFit
End With

End Sub

这将是一个非常脆弱的解决方案,因为如果有人改变页面结构,selectNodes中使用的XPath表达式将会中断。您可以在//ns:li中使用更简单且不那么脆弱的表达式selectNodes,但这会从您必须从列表中删除的页面中提取其他一些无关的值。

该维基百科页面无效XHTML(由于两个空的<ul></ul>标签对)