vba处理html⽂档,VBA中的HTML解析
我正在尝试更新morningstar的⽹站的基⾦规模。我以前的IE⾃动化尝试没有成功,所以我切换到XML httpRequest(⼯作速度也快得多)。现在,我⽆法从我从⽹站获得的⽂档中打印出正确的线条。我希望代码在第⼀个“td” - 标签被称为“基⾦规模(Mil)”的“tr” - 标签内给我第三个“td” - 标签。所以代码循环遍历所有“td”标签的标题,并且如果发现"{line heading}" = "Fund Size (Mil)"就跳转到⾏动。现在这是问题。我不知道如何参考这些标题。我试着将每个“td”-tag设置为⼀个变量(在“tr”-tag中有3个“td” - 标签,所以我对每个“td-tag”都有变量row1,row2,row3) ),但是当我现在做这个,我得到⼀个运⾏时错误438:对象不⽀持此属性或⽅法符合VBA 中的HTML解析
Debug.ElementsByTagName("tr")(0).Cells(0).innerHTML
此外,当我Debug.Print TDElement.innerHTML,我没有看到我需要的“td”标签。当我最后放⼊.innerText时,我会看到所有“td”标签。
现在的问题是: 1)如何直接引⽤标题? (请参阅下⾯For Each循环内的注释代码⾏) 2)什么原因导致我没有看到带有.innerHTML的所有
td-tags,但是我⽤.innerText看到它们?
Sub XMLhttpRequestTest2()
'Microsoft XML, v 6.0
'Microsoft HTML object library, used in parsing HTML
Dim myurl As String
Dim TDElement As Object
Dim TDElements As IHTMLElementCollection
Dim IE As MSXML2.XMLHTTP60
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLBody As MSHTML.HTMLBody
Set IE = New MSXML2.XMLHTTP60
Set HTMLDoc = New MSHTML.HTMLDocument
Set HTMLBody = HTMLDoc.body
myurl = "uk/uk/funds/snapshot/snapshot.aspx?id=F0GBR04BKW"html document是什么
IE.Open "GET", myurl, False
IE.send
HTMLBody.innerHTML = IE.responseText
Set TDElements = ElementsByTagName("td")
For Each TDElement In TDElements
Debug.Print TDElement.innerText '.innerText/.innerHTML. Can't see the fund size with .innerHTML??
' If "{line heading}" = "Fund Size (Mil)" Then 'How can I refer to headings in the html document?
' Worksheets("Sheet3").Range("B3") = Split("{line text}", ";")(1) 'reference to line text?
Next
End Sub
H2SO4的答案固定的上述问题。以下是对最初问题的扩展。
现在TDElement被分配了⼏⾏⽂本(我将h2so4的值10切换到3,因此代码在到基⾦字符串时显⽰接下来的3⾏)。我怎样才能进⼀步解析呢?当前⾏Worksheets("helper").Cells(x, 6).Value = Split(TDElement.innerText, " ")(1)返回我需要的值(769.28),但如果我真的明⽩这⾥发⽣了什么,将来会有帮助。
所以,只是为了锻炼,我将如何获得所有3⾏打印在⾃⼰的细胞?因此,产出将为:基⾦规模(⽶尔),31/08/2017,769.28单元格(x,6),(x,7),(x,8)。当我尝试将函数“Split”或“Left”分配给TDElement时,函数只会定位最后⼀⾏,⽽不是上⾯的其他⾏。但是,当我Debug.Print TDElement.innerText/.innerHTML,我也看到其他线路。那么我怎样才能“访问”最后⼀⾏之上的⾏呢?
输出的Debug.Print TDElement.innerText:
基⾦规模(MIL)
31/08/2017
EUR 769.28
2017-09-14
Samppa

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。