Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-解析HTML以检索excel表格_Html_Vba_Excel - Fatal编程技术网

VBA-解析HTML以检索excel表格

VBA-解析HTML以检索excel表格,html,vba,excel,Html,Vba,Excel,我试图从HTML页面中提取一个表 HTML看起来像: <table class='tableStyle'> <tr> <th class='headerValueClass'>Oper Day</th> <th class='headerValueClass'>Interval Ending</th> <th class='headerValueClass'>HB_BUSAVG</th> <th

我试图从HTML页面中提取一个表

HTML看起来像:

<table class='tableStyle'>
<tr>
<th class='headerValueClass'>Oper Day</th>
<th class='headerValueClass'>Interval Ending</th>
<th class='headerValueClass'>HB_BUSAVG</th>
<th class='headerValueClass'>HB_HOUSTON</th>
<th class='headerValueClass'>HB_HUBAVG</th>
<th class='headerValueClass'>HB_NORTH</th>
<th class='headerValueClass'>HB_SOUTH</th>
<th class='headerValueClass'>HB_WEST</th>
<th class='headerValueClass'>LZ_AEN</th>
<th class='headerValueClass'>LZ_CPS</th>
<th class='headerValueClass'>LZ_HOUSTON</th>
<th class='headerValueClass'>LZ_LCRA</th>
<th class='headerValueClass'>LZ_NORTH</th>
<th class='headerValueClass'>LZ_RAYBN</th>
<th class='headerValueClass'>LZ_SOUTH</th>
<th class='headerValueClass'>LZ_WEST</th>
</tr>
<tr>
    <td class='labelClassCenter'>02/10/2017</td>
    <td class='labelClassCenter'>0015</td>
    <td class='labelClassCenter'>14.76</td>
    <td class='labelClassCenter'>16.71</td>
    <td class='labelClassCenter'>11.72</td>
    <td class='labelClassCenter'>18.32</td>
    <td class='labelClassCenter'>14.34</td>
    <td class='labelClassCenter'>-2.52</td>
    <td class='labelClassCenter'>14.07</td>
    <td class='labelClassCenter'>13.79</td>
    <td class='labelClassCenter'>16.62</td>
    <td class='labelClassCenter'>13.76</td>
    <td class='labelClassCenter'>17.48</td>
    <td class='labelClassCenter'>26.37</td>
    <td class='labelClassCenter'>14.42</td>
    <td class='labelClassCenter'>-1.07</td>
</tr>
<tr>
    <td class='labelClassCenter'>02/10/2017</td>
    <td class='labelClassCenter'>0030</td>
    <td class='labelClassCenter'>13.02</td>
    <td class='labelClassCenter'>14.99</td>
    <td class='labelClassCenter'>10.54</td>
    <td class='labelClassCenter'>15.71</td>
    <td class='labelClassCenter'>13.49</td>
    <td class='labelClassCenter'>-2.03</td>
    <td class='labelClassCenter'>12.86</td>
    <td class='labelClassCenter'>13.19</td>
    <td class='labelClassCenter'>14.93</td>
    <td class='labelClassCenter'>12.66</td>
    <td class='labelClassCenter'>14.98</td>
    <td class='labelClassCenter'>22.27</td>
    <td class='labelClassCenter'>14.20</td>
    <td class='labelClassCenter'>-1.29</td>
</tr>

工作日
区间结束
HB_BUSAVG
休斯顿大学
HB_HUBAVG
HB_北
HB_南部
西比乌酒店
LZ_AEN
LZ_CPS
休斯顿
LZ_LCRA
LZ_北
LZ_RAYBN
LZ_南部
LZ_WEST
02/10/2017
0015
14.76
16.71
11.72
18.32
14.34
-2.52
14.07
13.79
16.62
13.76
17.48
26.37
14.42
-1.07
02/10/2017
0030
13.02
14.99
10.54
15.71
13.49
-2.03
12.86
13.19
14.93
12.66
14.98
22.27
14.20
-1.29
我想从这里得到一个漂亮的excel表格

这是我用来获取页面的sub,但我不知道如何从这里解析HTML

Sub ImportRTPrice()

READYSTATE_COMPLETE = 4
Dim ie As InternetExplorer
Dim html As MSHTML.HTMLDocument
Set ie = New InternetExplorer
ie.Visible = False
ie.Navigate "http://ercot.com/content/cdr/html/20170210_real_time_spp"
Do While ie.READYSTATE <> READYSTATE_COMPLETE
DoEvents
Loop
Set html = ie.Document
ActiveWorkbook.ActiveSheet.Range("A1") = html.DocumentElement.innerHTML
Set ie = Nothing

End Sub
子导入价格()
READYSTATE_COMPLETE=4
Dim ie作为InternetExplorer
将html设置为MSHTML.HTMLDocument
Set ie=新的InternetExplorer
可见=假
即“导航”http://ercot.com/content/cdr/html/20170210_real_time_spp"
在ie.READYSTATE READYSTATE\u完成时执行此操作
多芬特
环
设置html=ie.Document
ActiveWorkbook.ActiveSheet.Range(“A1”)=html.DocumentElement.innerHTML
设置ie=无
端接头
谢谢!
奥利维尔

我希望这能让你走上正轨。这是我想你要找的。如果你有任何问题,请告诉我。我还建议您研究API调用,但这将帮助您了解上面提供的代码

Sub ImportRTPrice()

Dim ie As InternetExplorer
Dim html As MSHTML.HTMLDocument

Dim i

Set ie = New InternetExplorer

ie.Visible = False
ie.Navigate "http://ercot.com/content/cdr/html/20170210_real_time_spp"

Do While ie.READYSTATE <> READYSTATE_COMPLETE
DoEvents
Loop

Set html = ie.Document

On Error Resume Next

For i = 1 To 100 ' may have to adjust
ActiveWorkbook.ActiveSheet.Cells(i, 1) =   html.getElementsByClassName("headerValueClass")(i).innerHTML
ActiveWorkbook.ActiveSheet.Cells(i, 2) =   html.getElementsByClassName("labelClassCenter")(i).innerHTML
Next i

On Error GoTo 0

ie.quit

Set ie = Nothing

End Sub
子导入价格()
Dim ie作为InternetExplorer
将html设置为MSHTML.HTMLDocument
昏暗的我
Set ie=新的InternetExplorer
可见=假
即“导航”http://ercot.com/content/cdr/html/20170210_real_time_spp"
在ie.READYSTATE READYSTATE\u完成时执行此操作
多芬特
环
设置html=ie.Document
出错时继续下一步
对于i=1至100’,可能需要进行调整
ActiveWorkbook.ActiveSheet.Cells(i,1)=html.getElementsByCassName(“headerValueClass”)(i).innerHTML
ActiveWorkbook.ActiveSheet.Cells(i,2)=html.getElementsByCassName(“labelClassCenter”)(i).innerHTML
接下来我
错误转到0
不干了
设置ie=无
端接头

祝你今天愉快

您需要研究如何使用
MSHTML
library API来迭代DOM元素。我相信到处都有很多例子。就目前而言,您的问题与特定的编程问题无关——您基本上是要求人们为您完成工作,这对于堆栈溢出来说太广泛了。