VBA,从包含html的txt文档中提取特定单词并在excel中创建它们的列表

时间:2015-10-01 12:27:55

标签: html vba tags find

我在尝试从保存在计算机上的html文件中提取某些信息时出现问题。我需要vba代码来 1)打开包含html的这个txt,
2)找到包含单词heater的“Strong”标签,td标签后面包含我需要的短语 4)将其复制并过去进入C2

我需要从这个html文件中获取更多信息,但格式与标签项相同,标签中是我需要的特定信息。

我是编程的新手,我通常可以在论坛上找到并将它拼凑在一起然而这有点复杂。

2 个答案:

答案 0 :(得分:0)

您要查看的是在文件中读取然后进行模式匹配。应该可以使用StreamReader打开HTML。我对此并不积极,但值得一试。然后,您只需要逐字逐句地分离文档,并使用if语句进行模式匹配。

答案 1 :(得分:0)

我会将其解析为xml。在下面有关于文档结构的假设(表元素是强元素之后的兄弟),但这可以让你开始:

' Add reference to Microsoft XML
Sub ExtractFromHtml()
    Dim XMLDOC As MSXML2.DOMDocument
    Dim strongNodes As IXMLDOMNodeList
    Dim strongNode As IXMLDOMNode
    Dim nextNode As IXMLDOMNode
    Dim strongValue As String
    Set XMLDOC = New DOMDocument
    XMLDOC.Load ("C:\Where\your\doc\is\test.html")

    Set strongNodes = XMLDOC.getElementsByTagName("strong")
    For i = 0 To strongNodes.Length - 1
        Set strongNode = strongNodes.Item(i)
        If InStr(strongNode.XML, "Heater") > 0 Then ' <strong> with "Heater"
            Set nextNode = strongNode.NextSibling
            While nextNode.nodeName <> "table" ' first table *after* <string>
                Set nextNode = nextNode.NextSibling
            Wend
            Set nextNode = nextNode.FirstChild ' <tr>
            Set nextNode = nextNode.FirstChild ' <td>  should be the one you want 
        End If
    Next i
    Set strongNode = strongNodes.nextNode

End Sub