vba处理html 文档,VBA中的HTML解析

本文介绍了一种使用VBA和XMLHttpRequest从Morningstar网站抓取基金规模数据的方法。通过HTML解析,作者遇到如何直接引用特定标题以及为什么只能看到innerText而看不到innerHTML的问题。解决方案涉及遍历HTML表格元素并提取所需数据。后续讨论了如何进一步解析获取多行数据,特别是如何将不同部分存储在不同的单元格中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在尝试更新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.Print TDElements.getElementsByTagName("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.HTMLDoc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值