从HTML文件中提取数据(VBA?)

时间:2016-07-20 15:49:58

标签: html css excel vba excel-vba

我目前正在开展一个工作项目(我是实习生),预计需要几个星期才能完成。它基本上是从一个网站到另一个网站的迁移复制和粘贴工作。为了节省自己的时间,无聊并可能赢得自己的工作(如果我能够及时完成这项工作),我正在寻找自动化流程的方法。目前我已经计算了流程中的每一步,但其中一步。

基本上,我有另一个自动化程序下载html文件,并将其转换为网站上每个页面的文本文件,需要复制到新文件(超过1000)。我需要对这个html文件做的就是只提取正文,我已经确定了从中提取的起点和终点。这些都出现在所有的html文件中。

我目前正在尝试在excel中使用VBA来打开文件,提取数据并将结果写入新文件,从这里我可以自动执行复制和粘贴过程。

我无法弄清楚如何在这两点之间提取数据。我可以在两个字符串之间提取数据,即“开始”和然而,“结束”,我似乎无法在两个html标签之间提取数据。任何建议都会很棒。我不是程序员,我正在学习,以便尽快完成这个项目。

再次感谢。

2 个答案:

答案 0 :(得分:0)

本文介绍如何在VBA中解析HTML:

Parse HTML content in VBA

也许可以帮助你...

答案 1 :(得分:0)

一般来说,它会这样做:

Sub Test() Dim IE As Object

Set IE = CreateObject("InternetExplorer.Application")
With IE
    .Visible = True
    .Navigate "http://www.marketwatch.com/investing/stock/aapl/analystestimates" ' should work for any URL
    Do Until .ReadyState = 4: DoEvents: Loop

        x = .document.body.innertext
        y = InStr(1, x, "Average Target Price:")
        Z = Mid(x, y, 6)

        Range("A1").Value = Trim(Z)

        .Quit
    End With
End Sub

在您的具体情况下,它应该是这样的:

a = .document.body.innertext
b = InStr(1, x, "Start")
c = InStr(1, y, "End")

d = Mid(a, b, (c-b))

Range("A1").Value = Trim(d)